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].
|