C++ STL的学习从vector入手,但是在正式使用STL的内容之前,要先在主函数前添加一句
using namespace std;
它的作用就是定义标示符,如果不加上这句代码就要在每句使用C++标准程序库的任何标识符时加上“std::”了。
比如说
std::string s = 'Hellow World!';
std::cout<<s<<std::endl;
如果主函数前加上了using namespace std;的话,这样就好了
string s = 'Hellow World!';
cout<<s<<endl;
怎么样比刚才好多了吧,所以不要偷懒,凡是要用到C++标准程序库的任何标识符,都要先加上这一句代码。
说了这么多,现在终于要说说vector了。
vector
不定长数组、变长数组
头文件:#include<vector>
定义:vector<typename>name;
(在刚刚以及接下来的STL容器的定义中所用的typename表示可以是任何基本类型,例如int、double、char,也可以是自定义结构体或STL容器,例如vector、string等)
元素访问:(现已定义vector<int>vi;)
下标访问 vi[0]、vi[1],这与一维数组的访问方式极像。
通过迭代器访问。 vi.begin()和vi[0]是等价的;vi.begin()+4和vi[4]也是等价的。
遍历:
下标访问
for(int i = 0; i < vi.size(); i++)
迭代器访问
for(vector<int>::iterator it = vi.begin(); it != vi.end(); it++)
看完了两种遍历方式想必你一定知道我推荐的是哪一种访问方式了,没错就是下标访问。
常用函数:
push_back(x)
在vector后面添加一个元素x,时间复杂度O(1)。
pop_back()
删除vector的尾元素,O(1)。
size()
获取vector中元素的个数。
clear()
清空vector中的所有元素,O(N)。
insert(it,x)
向vector的it迭代器处插入一个元素x,O(N)。
例如,vi.insert(vi.begin()+2,-1);
将-1插入到vi[2]的位置上。
(1)erase(it)
删除迭代器it处的元素,O(N)。
(2)erase(first,last)
删除[first,last)内所有的元素,O(N)。
例如,vi.erase(vi.beegin()+1,vi.begin()+4);
删除vi[1],vi[2],vi[3].
联系客服