目录
动态开辟的数组,通过三个指针_first、_last、_end维护
size为容器的有效元素,size=_last - _first
_end - _first 为容器当前的最大容量
operator[] , 下标的随机访问 ,O(1)
iterator 迭代器遍历容器
foreach语法糖(通过iterator实现)
注:
对容器进行连续的插入或删除(insert/erase)时,一定要更新迭代器,否则第一次操作后,迭代器就失效了!
常用方法:
size() , empty()
reserve(int); 预留空间,只开空间,不添元素
resize(int); 扩容,即开空间,也添元素
swap() ,两容器进行元素交换
代码练习:
- #include
- #include
- using namespace std;
-
- int main()
- {
- vector<int> vec;
-
- vec.reserve(20);
- for (int i = 0; i < 20; i++)
- {
- vec.push_back(rand() % 100);
- }
- for (int i = 0; i < 20; i++)
- {
- cout << vec[i] << " ";
- }
- cout << endl;
-
- auto it1 = vec.begin();
-
- while (it1 != vec.end())
- {
- if (*it1 % 2 == 0)
- {
- it1 = vec.erase(it1);
- }
- else
- {
- it1++;
- }
- }
-
- for (it1=vec.begin(); it1 != vec.end(); it1++)
- {
- cout << *it1 << " ";
- }
- cout << endl;
-
- int size = vec.size();
- for (it1=vec.begin();it1!=vec.end();it1++)
- {
- if (*it1 % 2 != 0)
- {
- it1 = vec.insert(it1, *it1 - 1);
- it1++;
- }
- }
-
- for (auto x : vec)
- {
- cout << x << " ";
- }
- cout << endl;
- vector<int> tmp(12);
- for (auto& x : tmp)
- {
- x = 12;
- }
- for (auto& x : tmp)
- {
- cout << x << " ";
- }
- swap(vec, tmp);
- cout << endl;
- for (auto& x : tmp)
- {
- cout << x << " ";
- }
- return 0;
- }