C++ vector容器-44-vector插入和删除以及存取
本篇继续学习vector容器,前面学习了vector是一个单端数组。也就是说vector的插入和删除,基本上都是在数组的末端进行。本篇要学习的vector插入和删除的方法就能体现这个特点,最后学习vector的存取操作
1.vector的插入和删除
在vector和插入、删除相关的方法主要有下面几个
push_back(ele); // 尾部插入元素ele
pop_back(); // 删除最后一个元素
insert(const_iterator pos, ele); // 迭代器指向位置pos插入元素ele
insert(const_iterator pos, int count, ele); // 迭代器指向位置pos插入count个元素ele
erase(const_iterator pos); // 删除迭代器指向的元素
erase(const_itrator start, const_iterator end); // 删除迭代器从start到end之间的元素
clear(); //删除容器中所有的元素
先来看看前面两个,尾插法和尾删法的测试代码
#include
#include
#include
using namespace std;void printVector(vector &v)
{// for循环迭代器遍历容器内元素for(vector::iterator it = v.begin(); it != v.end(); it++){cout << *it << " "; }cout << endl;}void test01()
{// vector的插入和删除vector vec;// 1 尾部插入元素vec.push_back(2);vec.push_back(4);vec.push_back(6);vec.push_back(8);vec.push_back(10);printVector(vec);// 2 尾部删除最后一个元素vec.pop_back();printVector(vec);vec.pop_back();printVector(vec);}int main()
{test01();system("pause");return 0;
}
运行结果

再来看看使用迭代器进行指定位置插入元素的两个insert方法基本使用
#include
#include
#include
using namespace std;void printVector(vector &v)
{// for循环迭代器遍历容器内元素for(vector::iterator it = v.begin(); it != v.end(); it++){cout << *it << " "; }cout << endl;}void test01()
{// vector的插入和删除vector vec;// 1 尾部插入元素vec.push_back(2);vec.push_back(4);vec.push_back(6);vec.push_back(8);vec.push_back(10);printVector(vec);// 3 迭代器指向位置pos 插入元素vec.insert(vec.begin()+1, 233);printVector(vec);// 3 迭代器指向位置pos 插入n个ele元素vec.insert(vec.begin(), 3, 100);printVector(vec);}int main()
{test01();system("pause");return 0;
}
测试结果:

最后来看看删除的几个方法
#include
#include
#include
using namespace std;void printVector(vector &v)
{// for循环迭代器遍历容器内元素for(vector::iterator it = v.begin(); it != v.end(); it++){cout << *it << " "; }cout << endl;}void test01()
{// vector的插入和删除vector vec;// 1 尾部插入元素vec.push_back(2);vec.push_back(4);vec.push_back(6);vec.push_back(8);vec.push_back(10);printVector(vec); // 5 迭代器指向位置元素删除vec.erase(vec.begin() + 2); // 8进行删除printVector(vec);// 6 迭代器指定区间进行删除vec.erase(vec.begin(), vec.end() - 1);printVector(vec);// 7. 清空元素vec.push_back(9);vec.clear();printVector(vec);
}int main()
{test01();system("pause");return 0;
}
运行结果,注意下面一个空行打印,表示容器为空,已删除全部元素

2.vector的存取操作
存取操作,一般是说容器中某个或某些元素进行取出来,也就是读操作,还可以通过赋值进行修改操作。
主要和存取相关的操作函数原型:
at(int id); // 返回索引id所指的数据
operator[]; // 返回索引id所指的数据
front(); // 返回容器中第一个数据元素
back(); // 返回容器中最后一个数据元素
前面两个在学习string类的时候也有这两个方法,然后这里有取第一个和最后一个元素,有时候第一个和最后一个还是很方便的,通过这样方法。
#include
#include
#include
using namespace std;void printVector(vector &v)
{// for循环迭代器遍历容器内元素for(vector::iterator it = v.begin(); it != v.end(); it++){cout << *it << " "; }cout << endl;}void test01()
{// vector存取操作vector vec;// 1 尾部插入元素vec.push_back(2);vec.push_back(4);vec.push_back(6);vec.push_back(8);vec.push_back(10);printVector(vec); // 根据索引查找对应得数据cout << "索引为2的元素是:" << vec.at(2) << endl;cout << "索引为2的元素是:" << vec[2] << endl;// 获取第一个和最后一个元素cout << "第一个元素是:" << vec.at(0) << endl;cout << "最后一个的元素是:" << vec[vec.size()-1] << endl;cout << "第一个元素是:" << vec.front() << endl;cout << "最后一个的元素是:" << vec.back() << endl;}int main()
{test01();system("pause");return 0;
}
上面还给了通过索引来找第一个和最后一个,java一般是同样的

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
