std::vector是封装动态数组的顺序容器,支持下标随机访问,c++开发中使用非常频繁。
其存储是自动管理的,按需扩张和收缩,一般扩展为原先的1.5-2倍。
vector通常占用多于静态数组的空间,因为需要分配更多内存以管理将来可能的增长。
代码:
下面演示std::vector的增、删、改、查
#include <iostream>
#include <vector>
using namespace std;
typedef vector<int> MyVector;
void printf_myVector(const MyVector& vec) {
auto vecIter = vec.begin();
for (; vecIter != vec.end(); vecIter++) {
cout << *vecIter << " ";
}
cout << "\n";
}
int main()
{
MyVector myVector;
//增
int array[] = { 1,5,12 };
for (auto &num : array) {
myVector.push_back(num);
}
myVector.insert(myVector.end(), {7,8});
printf_myVector(myVector);
cout << "----------------我是分割线 删除5-------------" << endl;
//删
auto iter = myVector.begin();
for (; iter != myVector.end(); iter++) {
if (5 == *iter) {
iter = myVector.erase(iter);
}
}
printf_myVector(myVector);
cout << "----------------我是分割线 修改索引0、1-------------" << endl;
//改
if (myVector.size() > 2) {
myVector[0] = 55;
myVector.at(1) = 66;
}
printf_myVector(myVector);
cout << "----------------我是分割线 查找55-------------" << endl;
//查
bool flag = false;
vector<int>::iterator iter1;
iter1 = find(myVector.begin(), myVector.end(), 55);
if (iter1 != myVector.end()) {
flag = true;
}
cout << "flag = " << flag << endl;
getchar();
return 0;
}
输出: