一、初始化
我的理解是vector就相当于数组,可以是整型数组、字符串数组等,其中存放什么数组取决于<数据类型>
std::vector<int> a; // 整型数组std::vector<string> b; // 字符串数组a = {1,2,3,4,5,6};std::cerr << a.size() << std::endl; // 6 std::cerr << b.size() << std::endl; // 0
二、首元素u.front() 和 尾元素u.back()
std::vector<int> a;a = {1,2,3,4,5,6};int first = a.front();std::cerr << "first = " << first <<std::endl; // first = 1int last = a.back();std::cerr << "last = " << last <<std::endl; // last = 6
三、迭代器遍历iterator
a.begin()
和a.end()
返回指向容器中第一个和最后一个元素的迭代器,获取a这个vector的开始和结束
迭代器为指针类型,故通过*iter1
取指针所指向的值
//正向遍历std::vector<int> a;a = {1,2,3,4,5,6};std::vector<int>::iterator iter1 = a.begin();for (iter1; iter1 < a.end(); iter1++){std::cerr << "iter1 is : " << *iter1 << std::endl;}/*iter1 is : 1iter1 is : 2iter1 is : 3iter1 is : 4iter1 is : 5iter1 is : 6*///反向遍历std::vector<int>::iterator iter2 = a.end() - 1; // a.end()-1为最后一个元素for (iter2; iter2 >= a.begin(); --iter2){std::cerr << "iter2 is : " << *iter2 << std::endl;}/*iter2 is : 6iter2 is : 5iter2 is : 4iter2 is : 3iter2 is : 2iter2 is : 1*/
四、u.size()当前实际有多少个元素 和 u.capacity()总容积
std::vector<int> u(10);u = { 1,2,3 };std::cerr << "u.size() = " << u.size() << std::endl; // u.size() = 3std::cerr << "u.capacity() = " << u.capacity() << std::endl; // u.capacity() = 10std::vector<int>::iterator iter1 = u.begin();for (iter1; iter1 < u.end(); iter1++){std::cerr << "iter1 is : " << *iter1 << std::endl;}/*iter1 is : 1iter1 is : 2iter1 is : 3*/
五、vector.resize()改变vector的大小,若扩大则用0填充,若缩小则删除
std::vector<int> u(10);u = { 1,2,3 };u.resize(12);std::cerr << "u.size() = " << u.size() << std::endl; // u.size() = 20std::vector<int>::iterator iter1 = u.begin();for (iter1; iter1 < u.end(); iter1++){std::cerr << "iter1 is : " << *iter1 << std::endl;}std::cerr << "----------------------" << std::endl;u.resize(2);std::vector<int>::iterator iter2 = u.begin();for (iter2; iter2 < u.end(); iter2++){std::cerr << "iter2 is : " << *iter2 << std::endl;}/*
iter1 is : 1
iter1 is : 2
iter1 is : 3
iter1 is : 0
iter1 is : 0
iter1 is : 0
iter1 is : 0
iter1 is : 0
iter1 is : 0
iter1 is : 0
iter1 is : 0
iter1 is : 0
----------------------
iter2 is : 1
iter2 is : 2
*/
六、u.at(i) 和 u[i]访问第i个元素
std::vector<int> u(10);u = { 0,1,2,3,4,5 };std::cerr << u.at(2) << std::endl; // 2std::cerr << u[0] << std::endl; // 0
七、vector.data()返回vector中第一个元素的指针
std::vector<int> u(10);
u = { 0,1,2,3,4,5 };
int* p = u.data(); // 目前指针p指向了第一个元素0
p = p + 1; // 指针p指向第二个元素1
*p = 10; // 将第二个元素1赋值为10,目前第二个元素为10std::vector<int>::iterator iter = u.begin();
for (iter; iter < u.end(); iter++)
{std::cerr << *iter << std::endl;
}
/*
0
10
2
3
4
5
*/
八、vector.push_back(i)在vector中末尾添加一个i元素 和 vector.pop_back()移除vector的最后一个元素
std::vector<int> u(10);
u = { 0,1,2,3,4,5 };
int a = 12;
u.push_back(a);std::vector<int>::iterator iter = u.begin();
for (iter; iter < u.end(); iter++)
{std::cerr << *iter << endl;
}
/*
0
1
2
3
4
5
12
*/
std::vector<int> u(10);
u = { 0,1,2,3,4,5 };
int a = 12;
u.push_back(a); // 0 1 2 3 4 5 12u.pop_back(); // 0 1 2 3 4 5
u.pop_back(); // 0 1 2 3 4std::vector<int>::iterator iter = u.begin();
for (iter; iter < u.end(); iter++)
{std::cerr << *iter << endl;
}
/*
0
1
2
3
4
*/