我的vector容器学习小结

来源:互联网 发布:java启动cmd命令 编辑:程序博客网 时间:2024/05/18 03:49
1.vector容器元素的初始化方式:     1.1. vector<T> c;  创建一个名为c的空容器,容器中元素的类型为T     1.2. vector<T> c2(c); 创建容器c的副本c2,c和c2必须具有相同的容器类型和元素类型     1.3. vector<T> c(n);  创建有n个元素的容器c,每个元素的初始化由标准库自动执行     1.4. vector<T> c(n,t); 用n个值为t的元素创建容器c     1.5. vector<T> c(b,e); 创建容器c,其元素是迭代器b和e标示的范围内元素的副本     1.6. 程序中的第六种初始化方式其实与第五种初始化方式实质是一样的。因为指针就是迭代器!vector容器元素的初始化方式代码实现:
#include<iostream>#include<vector>using namespace std;int main(void){vector<int>::iterator iter;vector<int> ivec1; //第一种初始化方式:创建一个空的vectorfor (int i = 1; i != 5; ++i){ivec1.push_back(i);}cout << "第一种初始化方式:创建一个空的vector。其输出结果为:" << endl;for (iter = ivec1.begin(); iter != ivec1.end(); ++iter){cout << *iter << " ";}cout << endl << endl;vector<int> ivec2(ivec1);//第二种初始化方式:创建容器ivec1的副本ivec2cout << "第二种初始化方式:创建容器ivec1的副本ivec2" << endl;for (iter = ivec2.begin(); iter != ivec2.end(); ++iter){cout << *iter << " ";}cout << endl << endl;vector<int> ivec3(4);//第三种初始化方式:创建一个有4个元素的容器,不指定元素的初始化式,由标准库自动对其进行初始化cout << "第三种初始化方式:创建一个有4个元素的容器,不指定元素的初始化式,由标准库自动对其进行初始化" << endl;for (iter = ivec3.begin(); iter != ivec3.end(); ++iter){cout << *iter << " ";}cout << endl << endl;vector<int> ivec4(4, 1);//第四种初始化方式:用4个值为1的元素创建容器ivec4cout << "第四种初始化方式:用4个值为1的元素创建容器ivec4" << endl;for (iter = ivec4.begin(); iter != ivec4.end(); ++iter){cout << *iter << " ";}cout << endl << endl;vector<int> ivec5(ivec1.begin(), ivec1.end() - 1);//第五种初始化方式:创建容器ivec5,其元素是由一对迭代器标示的范围内的副本cout << "第五种初始化方式:创建容器ivec5,其元素是由一对迭代器标示的范围内的副本" << endl;for (iter = ivec5.begin(); iter != ivec5.end(); ++iter){cout << *iter << " ";}cout << endl << endl;int a[] = { 6, 7, 8, 9, 10, 11 };vector<int> ivec6(a, a + 6);//第六种初始化方式:创建容器ivec6,初始化为一段元素的副本cout << "第六种初始化方式:创建容器ivec6,初始化为一段元素的副本" << endl;for (iter = ivec6.begin(); iter != ivec6.end(); ++iter){cout << *iter << " ";}cout << endl << endl;system("pause");return 0;}
2.vector容器中常用的函数操作:     1.在vector容器中添加元素的操作:          1.1 c.push_back(t);  在容器c的尾部添加值为t的元素          1.2 c.insert(p,t);   在迭代器p所指向的元素前面插入值为t的新元素,返回指向新添加元素的迭代器          1.3 c.insert(p,n,t);  在迭代器p所指向的元素前面插入n个值为t的新元素。返回void类型          1.4 c.insert(p,b,e);   在迭代器p所指向的元素前面插入有迭代器b和e标记的范围内的元素。返回void类型          2.vector容器大小的操作:          2.1 c.size();  返回容器c中的元素个数          2.2 c.empty();  如果容器c为空,则返回true,否则返回false          3.访问容器中元素的操作:          3.1 c.back();  返回容器c的最后一个元素的引用。如果c为空,则该操作无定义。          3.2 c.front();  返回容器c的第一个元素的引用。 如果c为空,则该操作无定义。          3.3 c[n];       返回下标为n的元素的引用。          3.4 c.at(n);    返回下标为n的元素的引用。     4.删除容器中的元素的操作:          4.1 c.erase(p);  删除迭代器p所指向的元素,返回一个迭代器,它指向被删除元素的后面的元素。          4.2 c.erase(b,e);  删除迭代器b和e所标记的范围内的所有元素,返回一个迭代器,它指向被删除元素段后面的元素。          4.3 c.clear();    删除容器c内的所有元素。返回void          4.4 删除容器内指定的一个元素:我们必须先在容器中找到要删除的元素,然后再调用erase进行删除操作!寻找一个指定的元素使用的是标准库的find算法,具体请看程序中删除ivec容器中指定元素8的操作!     5.容器的赋值操作:          5.1 c1=c2;  删除容器c1内的所有元素,然后将c2的元素复制给c1,c1和c2的容器类型以及其元素类型必须相同!          5.2  c.assign(b,e);   重新设置c的元素:将迭代器b和e标记的范围内所有的元素复制到c中。b和e必须不是指向c中元素的迭代器!          5.3  c.assign(n,t);    将容器c重新设置为存储n个值为t的元素。
vector容器中常用函数操作的代码实现:
#include<iostream>#include<vector>using namespace std;int main(void){//往vector容器中添加元素的操作vector<int>::iterator iter;vector<int> ivec;for (int i = 6; i != 11; ++i){ivec.push_back(i);//在ivec容器的尾部添加元素6至10}cout << "使用push_back()在ivec容器的尾部添加元素6至10,输出结果为:" << endl;for (iter = ivec.begin(); iter != ivec.end(); ++iter){cout << *iter << " ";}cout << endl << endl;for (int i = 5; i != 0; i--)//在ivec容器的前端依次插入元素1至5{iter = ivec.begin();ivec.insert(iter, i);}cout << "使用insert(p,t)在ivec容器的前端依次插入元素1至5,输出结果为:" << endl;for (iter = ivec.begin(); iter != ivec.end(); ++iter){cout << *iter << " ";}cout << endl << endl;ivec.insert(iter = ivec.begin(), 5, 0);//在ivec容器的前端插入5个0cout << "使用insert(p,n,t)在ivec容器的前端插入5个0,输出结果为:" << endl;for (iter = ivec.begin(); iter != ivec.end(); ++iter){cout << *iter << " ";}cout << endl << endl;int a[] = { -1, -2, -3, -4, -5 };ivec.insert(iter = ivec.begin(), a, a + 5);//在ivec容器的前端插入一段元素cout << "在ivec容器的前端插入-1至-5,输出结果为:" << endl;for (iter = ivec.begin(); iter != ivec.end(); ++iter){cout << *iter << " ";}cout << endl << endl;//vector容器大小的操作if (!ivec.empty())//如果容器不为空{cout << "ivec容器中元素的个数为:" << ivec.size() << endl;}cout << endl << endl;//访问容器中的元素的操作cout << "ivec容器中的第一个元素是:" << ivec.front() << endl;cout << "ivec容器中的最后一个元素是:" << ivec.back() << endl;cout << "ivec容器中第三个元素是:" << ivec[2] << endl;cout << "容器ivec中的元素为(使用at(n)的方法遍历容器中的元素):" << endl;for (int i = 0; i != 20; ++i){cout << ivec.at(i) << " ";}cout << endl << endl;//删除容器中的元素的操作cout << "删除ivec容器中的第一个元素:" << endl;ivec.erase(iter = ivec.begin());cout << "删除ivec容器中的最后一个元素:" << endl;ivec.pop_back();cout << "容器ivec中的元素为:" << endl;for (iter = ivec.begin(); iter != ivec.end(); ++iter){cout << *iter << " ";}cout << endl << endl;cout << "删除ivec容器中的前五个元素:" << endl;ivec.erase(ivec.begin(), ivec.begin() + 5);cout << "容器ivec中的元素为:" << endl;for (iter = ivec.begin(); iter != ivec.end(); ++iter){cout << *iter << " ";}cout << endl << endl;cout << "删除ivec中为8的元素:" << endl;int searchValue(8);iter = find(ivec.begin(), ivec.end(), searchValue);if (iter != ivec.end()){ivec.erase(iter);}cout << "容器ivec中的元素为:" << endl;for (iter = ivec.begin(); iter != ivec.end(); ++iter){cout << *iter << " ";}cout << endl << endl;//容器的赋值操作vector<int>ivec2;ivec2 = ivec;//将容器ivec中的元素复制给ivec2cout << "将容器ivec中的元素复制给ivec2,容器ivec2中的元素为:" << endl;for (iter = ivec2.begin(); iter != ivec2.end(); ++iter){cout << *iter << " ";}cout << endl;ivec2.assign(5, 0);//将ivec2重新设置为存有5个0的容器cout << "将ivec2重新设置为存有5个0的容器,输出结果为:" << endl;for (iter = ivec2.begin(); iter != ivec2.end(); ++iter){cout << *iter << " ";}cout << endl;int b[] = { 10, 11, 12, 13, 14, 15 };ivec2.assign(b, b + 6);//将一对迭代器标记的范围内10到15的元素复制到容器ivec2中cout << "重新设置容器,将一对迭代器标记的范围内10到15的元素复制到容器ivec2中,输出结果为:" ;for (iter = ivec2.begin(); iter != ivec2.end(); ++iter){cout << *iter << " ";}cout << endl;cout << "删除ivec2容器中的所有元素:" << endl;ivec2.clear();if (ivec2.empty())cout << "ivec2容器为空!" << endl;cout << endl << endl;system("pause");return 0;}
0 0
原创粉丝点击