STL六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器

其中,容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据;容器又分为序列式容器和关联式容器。

算法:各种常用的算法,如sort、find、copy、for_each等;算法又分为质变算法和非质变算法。

迭代器:扮演了容器与算法之间的胶合剂;迭代器分为输入迭代器、输出迭代器、前向迭代器、双向迭代器以及随机访问迭代器等。

仿函数:行为类似函数,可作为算法的某种策略。

适配器:一种用来修饰容器或者仿函数或迭代器接口的东西。

空间配置器:负责空间的配置与管理。

我们在使用STL中string容器进行查找时需要注意到find()和rfind()的使用特点,find()是从左往右进行查找,而rfind()是从右往左查找。

string str111 = "abcdefbc";
int pos1 = str111.find("bc");
cout<<"pos1= "<<pos1<<endl; pos1 = str111.rfind("bc");
cout<<"pos1= "<<pos1<<endl;

结果:

关于vector容器中的知识点:

需要注意的是vector容器的容量和大小不是一个概念,同时当我们使用resize()重新指定容器大小时,,若是指定为更小的大小时,容量不会立即发生变化,指定为更大的大小时,容量会立即发生变化。

vector<int> v1;
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
}
vector<int> v31;
v31 = v1;
if (v31.empty())
{
cout<<"v31为空!!"<<endl;
}else
{
cout<<"v31不为空!!"<<endl;
cout<<"v31的容量为:"<<v31.capacity()<<endl;
cout<<"v31的大小为:"<<v31.size()<<endl;
} v31.resize(15,10);
printVector(v31);
cout<<"v31的容量为:"<<v31.capacity()<<endl;
cout<<"v31的大小为:"<<v31.size()<<endl; v31.resize(5);
printVector(v31);
cout<<"v31的容量为:"<<v31.capacity()<<endl;
cout<<"v31的大小为:"<<v31.size()<<endl;
void printVector(vector<int> &v)
{
for (vector<int>::iterator it = v.begin(); it!= v.end(); it++)
{
cout<<*it<<" ";
}
cout<<endl; }

结果:

reserve(int len)函数可以根据指定特定空间大小,防止后面需要多次分配空间,如果数据量较大,可以一开始利用reserve预留空间

vector<int> v ;
//v.reserve(1000);
int num =0;
int * p =NULL;
for (int i = 0; i < 1000; i++)
{
v.push_back(i);
if (p!=&v[0])
{
p=&v[0];
num++;
}
}
cout<<"num= "<<num<<endl;

加入v.reserve(1000)后

STL学习注意点的更多相关文章

  1. 标准模板库(STL)学习探究之stack

    标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string

  2. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  3. ###STL学习--vector

    点击查看Evernote原文. #@author: gr #@date: 2014-08-11 #@email: forgerui@gmail.com vector的相关问题.<stl学习> ...

  4. ###STL学习--关联容器

    点击查看Evernote原文. #@author: gr #@date: 2014-08-23 #@email: forgerui@gmail.com STL中的关联容器. ###stl学习 |--迭 ...

  5. ###STL学习--迭代器

    点击查看Evernote原文. #@author: gr #@date: 2014-08-23 #@email: forgerui@gmail.com STL中的迭代器. ###stl学习 |--迭代 ...

  6. ###STL学习--函数对象

    点击查看Evernote原文. #@author: gr #@date: 2014-08-13 #@email: forgerui@gmail.com 在stl中,函数对象被大量地使用,用以提高代码的 ...

  7. ###STL学习--适配器

    点击查看Evernote原文. #@author: gr #@date: 2014-08-24 #@email: forgerui@gmail.com STL中的适配器. ###stl学习 |--迭代 ...

  8. STL学习:STL库vector、string、set、map用法

    本文仅介绍了如何使用它们常用的方法. vector 1.可随机访问,可在尾部插入元素:2.内存自动管理:3.头文件#include <vector> 1.创建vector对象 一维: (1 ...

  9. Effective STL 学习笔记 39 ~ 41

    Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  10. Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value

    Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value */--> div.org-src-container ...

随机推荐

  1. 【经验】Git|Linux终端git太慢,改hosts、复制文件夹、用镜像源?不不不不不

      有个同学问我Linux下想要克隆一个仓库怎么办,并给我发了一个word,记录了他的操作.看完之后我的血压都上来了,遂记之.   下文分成两种情况,克隆一两个仓库,和克隆一大堆仓库. 文章目录 一. ...

  2. vue3 基础-插件 plugin

    前几篇我们介绍了 mixin 混入的的方式能实现对代码的复用, 而本篇将要介绍的 plugin 将会更加适合这种通用性功能的代码的复用和扩展. 最常用的场景, 比如轮播图就非常实用 plugin 来实 ...

  3. TVMC python:一种TVM的高级API

    Step 0: Imports from tvm.driver import tvmc Step 1: Load a model 下载模型: wget https://github.com/onnx/ ...

  4. 解决Andaconda创建虚拟环境出现的“无法定位程序输入点”的问题

    解决Andaconda创建虚拟环境出现的"无法定位程序输入点"的问题 需要查看两个相同名称的文件:libssl-1_1x64.dll 第一个文件的路径:anaconda\DLLs\ ...

  5. Django startproject, startapp后的配置 总结

    (1)在project的settings.py中的INSTALL_APPS中添加新建的各个app的名字. (2)设置templates文件夹的位置(容纳html文件):TEMPLATE_DIR=os. ...

  6. 聊一聊 dotnet 社区对 RISC-V 的支持进展

    我们从Github .NET 社区的相关仓库和Issue 里通过三个方面的简要梳理dotnet 对 RISC-V 的支持: 官方支持截至 2025 年 5月,微软官方的 .NET(dotnet)尚未正 ...

  7. codeup之查找

    Description 输入数组长度 n 输入数组 a[1-n] 输入查找个数m 输入查找数字b[1-m] 输出 YES or NO 查找有则YES 否则NO . Input 输入有多组数据. 每组输 ...

  8. CentOS7.* 查询开机启动项

    使用 systemctl list-unit-files 可以查看启动项 左边是服务名称,右边是状态,enabled是开机启动,disabled是开机不启动 过滤查询可以systemctl list- ...

  9. CF contest 1935 Round 932 (Div. 2) A-D题解

    Codeforces Round 932 (Div. 2) A-D题解 Codeforces Round 932 (Div. 2) 绪言 很菜,AB速度慢,卡在C,想DP,但是时间优化不下来,说服自己 ...

  10. 启智树提高组day4T1 T1(t1.cpp,1s,512MB)

    启智树提高组day4T1 T1(t1.cpp,1s,512MB) 题面描述 对⼀个⻓度为2n 的实数序列A考虑下列问题: 设S为序列中所有元素的和.你可以做下列操作n次: 选择两个未被选中过的下标i和 ...