1、vector是一种容器,是变长数组。
2、vector<int> s 或者vector<int> s[100] 后者是二维数组。
3、插入元素 s.push_back(456) 删除元素 s.pop_back(44)
4、两种访问方式
(1)s[0] s[1] s[s.size()-1] //s.size() 表示大小
(2)迭代器 vector<int>::iterator p = s.begin()
5、清除元素 s.erase(p) or s.erase(p+2) 里面是迭代器!! or s.erase(s.begin()+1,s.end() ) ;
5.5(1)include<algorithm> 里面的 reverse函数 当a为数组时,int a[10]可以用reverse(a,a+4)
若是 vector<int> a 则reverse里面需要迭代器
(2)若没有说明 vector<int> a(8) 即这个(8),那么直接写
不会输出结果。
加上后就有结果了
6、插入元素 s.insert(s.begin(),-456);
7、三种遍历方式
注意 vector<int>::iterator p=s.begin() 这句一定要在 push 或者insert之后,不然不会输出。
最后写在括号内
(1)
for(int i=0;i<s.size();i++){
printf("%d ",s[i]);
}
(2)
vector<int>::iterator p=s.begin();
vector<int>::iterator p1=p;
for(;p!=s.end();p++){ // 不支持i<s.end()
printf("%d ",*p);
}
(3)
for(int i=0;i<s.size();i++){
printf("%d ",*(p1+i));
}
2、set
1、set<int> a 是 升序 去除重复元素 的容器。
2、set 只能使用迭代器 iterator
3、set 不支持 上图中 (3)的遍历方式 不支持 *( it + i )
4、set 里的insert(456) 是直接插入元素,与vector不同( insert(s.begin(),456) )
5、erase 同样两种方式 注意 s.erase(a.begin(),a.end()) 后者是last的范围是指下一个元素,
4没有被删除,即删除【first,last)
6、clear() size() 同vector