|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 moc 于 2018-9-16 22:40 编辑
1、vector容器简介
vector将元素置于一个动态数组中加以管理。
vector可以随机存取元素(支持索引值直接存取,用[]操作符和at()方法)。
vector尾部添加元素非常快,但在中部或头部添加或移除元素比较费时。
2、vector构造函数
vector采用模板技术,可以存放int,float,string,类对象,指针等元素。
容器元素的存放时按值的复制方式进行的,所以元素类型必须可以复制,(类要了提供拷贝构造函数)。
3、vector元素添加和删除
vector.push_back(i) 尾部添加元素i
vector.front() 容器的头部元素,可做左值
vector.back() 容器的尾部元素,可做左值
vector[] []操作
vector.at(i) at(i)操作,可抛出异常
- vector<int> v1;
- v1.push_back(1); // 从尾部添加元素
- v1.push_back(3);
- v1.push_back(5);
- cout << "Length:" << v1.size() << endl;
- cout << v1.front(); // 获取头部元素
- cout << v1.back(); // 获取尾部元素
- v1.pop_back(); // 弹出尾部元素
- cout << v1[v1.size()-1];
- // 修改头部元素的值
- v1.front() = 9; // 函数返回值当左值(返回引用)
- v1.back() = 0;
- cout << v1.front() << v1.back() << endl;
复制代码
4、vector元素初始化和遍历
1. 数组方式遍历
2. 迭代器遍历
3. 逆向迭代器遍历
- // vector元素初始化
- vector<int> v2 = v1; // 拷贝构造函数初始化
- vector<int> v3(v1.begin(), v1.begin() + 2); // 左开右闭
- // vector的遍历
- vector<int> v4(10); // 提前分配好内存
- for (int i = 0; i < 10; i++)
- {
- v4[i] = i + 1;
- cout << v4[i];
- }
- cout << endl;
- // vector的迭代器遍历 //begin指向头元素, end指向最后一个元素的后面
- for (vector<int>::iterator it = v4.begin(); it != v4.end(); it++)
- {
- cout << *it << " ";
- }
- cout << endl;
- // vector的逆向迭代器遍历
- for (vector<int>::reverse_iterator rit = v4.rbegin(); rit != v4.rend(); rit++)
- {
- cout << *rit << " ";
- }
复制代码
5、vector删除和插入元素
vec.clear(); 移除元素中的所有数据
vec.erase(beg, end); 删除[beg, end)间的数据,并返回下一个数据的位置
vec.erase(pos); 删除pos位置的数据,并返回下一个数据的位置
vec.insert(pos, elem); 在pos位置插入一个elem元素的拷贝,并返回新数据的位置
vec.insert(pos, elem); 在pos位置插入n个elem元素,无返回值
vec.insert(pos, beg, end); 在pos位置插入[beg, end)间的数据,无返回值
- // 区间删除操作
- v4.erase(v4.begin(), v4.begin() + 3);
- v4.erase(v4.begin());
- cout << endl;
- for (vector<int>::iterator it = v4.begin(); it != v4.end(); it++)
- {cout << *it << " ";}
- cout << endl;
- // 删除指定值的元素
- for (vector<int>::iterator it = v4.begin(); it != v4.end();)
- {
- if (*it == 7)
- {
- it = v4.erase(it); // 当删除迭代器所指向元素的时候,erase操作会让it自动下移
- }
- else
- {
- it++;
- }
- }
- for (vector<int>::iterator it = v4.begin(); it != v4.end(); it++)
- {cout << *it << " ";}
- cout << endl;
-
- // 插入元素
- v4.insert(v4.begin(), 111);
- v4.insert(v4.end(), 222);
- for (vector<int>::iterator it = v4.begin(); it != v4.end(); it++)
- {cout << *it << " ";}
复制代码 |
|