STL = Standard Template Library,标准模板库,惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装什么。在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。

1) STL 基础

stl 算法知识

Using the STL generic reverse algorithm with an array

Use random_shuffle algorithms with array

#include <iostream>
#include <string>
#include <cassert>
#include <algorithm> // For reverse algorithm
using namespace std;

int main()
{

char array1[] = "abc";
int N1 = strlen(array1);
int a[100], b[100];
int i;

reverse(&array1[0], &array1[N1]);
for (i = 0; i < N1; i++)
cout << "array1[" << i << "] = " << array1[i] << endl;
for (i = 0; i < 100; ++i)
a[i] = i;
reverse_copy(&a[0], &a[100], &b[0]);
for (i = 0; i < 100; i++)
cout << "a: " << a[i] << " -- b: " << b[i] << endl;

random_shuffle(&a[0], &a[100]);

for (i = 0; i < 100; i++)
    cout << " " << a[i] << " ";
return 0;
}

1.2 巧用 C++ 函数模板

Using function templates to get the max and min value in an array

#include <iostream>
using std::cout;
using std::endl;

template<class T> T max(const T* data, int size) {
    T result = data[0];
    for(int i = 1 ; i < size ; i++)
      if(result < data[i])
        result = data[i];
    return result;
  }

template<class T> T min(const T* data, int size) {
    T result = data[0];
    for(int i = 1 ; i < size ; i++)
      if(result > data[i])
        result = data[i];
    return result;
  }

int main() {
  double data[] = {1.5, 4.6, 3.1, 1.1, 3.8, 2.1};
  int numbers[] = {2, 22, 4, 6, 122, 12, 1, 45};

const int dataSize = sizeof data/sizeof data[0];
  cout << "Minimum double is " << min(data, dataSize) << endl;
  cout << "Maximum double is " << max(data, dataSize) << endl;

const int numbersSize = sizeof numbers/sizeof numbers[0];
  cout << "Minimum integer is " << min(numbers, numbersSize) << endl;
  cout << "Maximum integer is " << max(numbers, numbersSize) << endl;

return 0;
}

/*
Minimum double is 1.1
Maximum double is 4.6
Minimum integer is 1
Maximum integer is 122

*/

Use back_insert_iterator to insert element into a vector

转载于:https://www.cnblogs.com/shixinzhu/archive/2012/03/05/2380203.html

Linux C++ STL用法介绍(1)相关推荐

  1. c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件

    Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...

  2. STL vector用法介绍

    STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...

  3. c语言strTrimed函数用法介绍,linux type命令用法_转

    在脚本中type可用于检查命令或函数是否存在,存在返回0,表示成功:不存在返回正值,表示不成功. $ type foo >/dev/null 2>&1 || { echo > ...

  4. linux命令 删除alias,Linux下alias命令的用法介绍

    本篇文章给大家带来的内容是关于Linux下alias命令的用法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 最近在使用ssh连接远程机器敲了类似ssh -i ~/.ssh/13 ...

  5. C++ stl vector介绍

    转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...

  6. lsof 命令实用用法介绍

    Table of Contents 前言 Linux 下有哪些文件 lsof 命令实用用法介绍 查看当前打开的所有文件 列出被删除但占用空间的文件 恢复打开但被删除的文件 查看当前文件被哪些进程打开 ...

  7. 用户管理 之 Linux 用户管理工具介绍

    作者:北南南北 赞助: 来自:LinuxSir.Org 摘要: 本文主要介绍Linux系统的用户和用户组的查询.添加.修改及删除等管理工具: 目录索引 一.与用户管理相关的配置文件: 1./etc/p ...

  8. Linux中sysstat服务,Linux sysstat常用命令介绍

    一.sysstat 软件安装 下载sysstat软件包,解压 tar zxvf *.tar.gz ./configure make make install 二.sar 命令介绍 sar -h 用法: ...

  9. Linux 用户管理工具介绍

    目录索引 一.与用户管理相关的配置文件: 1./etc/passwd 和/etc/groups 2.超级权限控制 sudo 的配置文件/etc/sudoers : 3.添加用户规则文件 /etc/lo ...

最新文章

  1. 21天学通python pdf-21天学通Python PDF百度网盘资源下载
  2. Linux监控平台搭建( zabbix监控)
  3. SqlServer中将某列的值拼接成字符串
  4. Windows核心编程_组件透明
  5. python中os关于目录创建和文件移动操作
  6. 大学生 大创 软著申请指南(图文含模板)(专用于大创,这篇就够了!纯干货!)
  7. python数据分析之朴素贝叶斯实践
  8. 一图秒懂!“天使投资、VC、PE、A轮、B轮、C轮融资”的关系
  9. 计算机最最最底层的 工作原理是怎么运行的
  10. 软件设计——云原生12要素
  11. 2019, XII Samara Regional Intercollegiate Programming (G、H、J、K、L题解)
  12. Excel2JSON Excel转JSON Excel另存为JSON的技巧
  13. OpenCASCADE 读写STEP文件
  14. 宇视200W 相机一天所占存储空间是多少
  15. 虚拟化技术加速Android模拟器尝试
  16. python爬取软件内数据_各种数据爬取工具爬虫合集整理
  17. css Hack
  18. Numpy中flatten与ravel的区别
  19. 目标检测 | End-to-end Lane Detection through Differentiable Least-Squares Fitting
  20. 2023微软校招开始啦,快来找我内推吧

热门文章

  1. 问题 J: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数
  2. Redis(一)面试总结精讲
  3. 微服务链路追踪_.NET Core微服务:分布式链路追踪系统分享
  4. 轮播 一张中间 两张在旁边_黄渤为《五哈》做海报,邓超陈赫都只有一张,唯独对鹿晗待遇不同...
  5. mysql服务连接标识_MySQL 连接 | 菜鸟教程
  6. docker安装mysql主从视频教程_docker安装mysql主从
  7. 2020年互联网人年终模板,是你在找的吗?
  8. 三届格莱美奖得主Ryan Tedder将在Origin上发行NFT
  9. Hashmasks将其艺术品与IPFS固定激励一起存储至Arweave中
  10. 地方旅游产业运行监测与应急指挥平台/旅游资源管理平台/旅游产业监测平台/旅游应急指挥平台/旅游资源统计/旅游线路数据/旅游产业可视化大屏管理系统/餐饮场所数据/游客流量监测/景区数据监测/视频监控