1 vector

容器vector可以理解为变长数组,它里面放的是相同类型的元素。

vector<int> vec={1,2,3,4};//拷贝构造
vector<string> vec_str{"abc","def"};//直接构造

for(string str : vec_str){
  cout<<str;
}

使用vector的好处主要在于它有大量的函数可供使用,例如

   vector<int> vec;
    for(int i=0;i<100;i++){
        vec.push_back(i);//push_back()//实现向尾部插入一个数
    }
    cout<<vec.size()<<endl;
    cout<<vec[66];

//输出
100
66

2 迭代器

当我们在用到map或者set这样的无序容器时可能无法通过索引去获取元素,那么就需要迭代器来获取。首先看这样一段程序

vector<int> vec{1,2,3,4};
for(auto it=vec.begin();it!=vec.end();it++){
    cout<<*it<<endl;
}
//输出
1
2
3
4

首先介绍auto,它会根据不同迭代器的类型来改变,在这里它的表示等价于vector<int>::iterator.定义的it有点像指针一样,我们要想得到它的值要用取值运算符*来得到。另外要注意的一点是end返回的是最后一个元素之后一个位置。

我们把迭代器理解为指针一样的存在,那么它的使用也和指针会有许多相似,比如现在我们想获取字符串类型每一个元素的大小

vector<string> vec_str{"hello","world"};
for(auto it=vec.begin();it!=vec.end();it++){
    cout<<(*it).size()<<endl;//或者是it->size()也可以
}