数组内两数之和为target—2022-06-27
2022-06-27 本文已影响0人
李明成
vector的使用
inlcude <vector>
初始化
vector<int> v1; // 最常用的使用方式
vector<father> v2;
vector<string> v3;
vector<vector<int> >; //注意空格。这里相当于二维数组int a[n][n];
vector<int> v5 = { 1,2,3,4,5 }; //列表初始化,注意使用的是花括号,可以直接返回匿名{1,2}
vector<string> v6 = { "hi","my","name","is","lee" };
vector<int> v7(5, -1); //初始化为-1,-1,-1,-1,-1。第一个参数是数目,第二个参数是要初始化的值
vector<string> v8(3, "hi"); // 注意小括号内是指定多少个什么样的数据
vector<int> v9(10); //默认初始化为0
vector<int> v10(4); //默认初始化为空字符串
添加元素
push_back
遍历元素
for(int i =0; i< it.size();i++){
vi[i] = 9; //元素的访问
}
vector<int>::iterator im = it.begin();
for (;im!=it.end();it++){
cout << *iter << endl;
//下面两种方法都都可以检查迭代器是否为空
cout << (*iter).empty() << endl;
cout << iter->empty() << endl;
}
插入元素
std::vector<int> demo{1,2};
//第一种格式用法
demo.insert(demo.begin() + 1, 3);//{1,3,2}
//第二种格式用法
demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
//第三种格式用法
std::array<int,3>test{ 7,8,9 };
demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
//第四种格式用法
demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
for (int i = 0; i < demo.size(); i++) {
cout << demo[i] << " ";
}
删除元素:
删除尾部元素 pop_back();
删除指定元素
vector<int>demo{ 1,2,3,4,5 };
auto iter = demo.erase(demo.begin() + 1);//删除元素 2
//输出 dmeo 容器新的size
cout << "size is :" << demo.size() << endl;
//输出 demo 容器新的容量
cout << "capacity is :" << demo.capacity() << endl;
for (int i = 0; i < demo.size(); i++) {
cout << demo[i] << " ";
}
//iter迭代器指向元素 3
结果:
cout << endl << *iter << endl;
size is :4
capacity is :5
1 3 4 5
3
erase() 函数在删除元素时,会将删除位置后续的元素陆续前移,并将容器的大小减 1,但是不改变容量