vector的介绍:
1.vector是表示可变大小的数组序列容器。
2.vector采用连续存储空间来存储元素,就像数组一样,可以采用下标对vercot的元素进行访问,vertor的底层采用动态的顺序表,它的大小是可以改变的,而且它的大小会被容器自动处理。
vector的使用
1.vector的定义:
vector<int> v1(); // 无参构造
vector<int> v2(10,5); // 构造并初始化10个5
int array[] = {1,2,3,4,5};
//STL中所有的容器都是左闭右开的
vector<int> v3(array,array+sizeof(array)/sizeof(array[0])); //使用指针初始化构造
vector<int> v4(array,array+3);
string s("hello");
vector<char> v5(s.begin(),s.end()); // 使用迭代器进行初始化构造
vector<char> v6(v5); // 拷贝构造
C++新增加了列表的初始化
vector<int> v7{1,2,3,4,5}; 有些编译器版本不支持
vector迭代器的使用:
begin / end :获取第一个数据位置的iterator/const_iterator / 获取最后一个数据的下一个位置 的iterator/const_iterator
vector<int> :: iterator it = v.begin()
++it // 从begin向end的方向进行移动 --- 正向迭代器vector<int> :: reverse iterator rit = v.rbegin()
++rit // 从rbegin向rend方向进行移动 -- 反向迭代器
rbegin / rend :获取最后一个数据位置的reverse_iterator / 获取第一个数据前一个位置的 reverse_iterator
使用迭代器对vector中的元素进行遍历
void Test12()
{
int array[] = {1,2,3,4,5,6,7,8,9,0};
vector<int> v(array,array+sizeof(array)/sizeof(array[0]));
auto rit = v.rbegin();
auto it = v.begin();
while(it != v.end())
{
cout<<*it<<" ";
it++;
}
cout<<endl;
while(rit != v.rend())
{
cout<<*rit<<" ";
rit++;
}
cout<<endl;
}
使用迭代器的小技巧:如果我们要使用迭代器就要声明这么长的一段代码vector<int> :: iterator it = v.begin(),为了减轻人们的负担,可以使用auto来让编译器自己来识别类型,从而减轻人们的负担同时避免错误
vector<int> :: iterator it = v.begin() ----> auto it = v.begin()