C++中vector 容器的基本操作

摘要:
vector是一种简单高效的容器,具有自动内存管理功能。对于大小为n的vector容器,它的元素下标是0~n-1。vector有二个重要方法:begin():返回首元素位置的迭代器。vectorv;2)指定容器元素个数。vectorv;//10个元素,初始化为7.82、访问和遍历vector容器1)下标方式访问vector元素并赋值。=v.end();it++)7{8cout˂˂*it˂˂endl;9}3、向vector中添加元素1)向vector容器的尾部追加新元素。需要头文件”#include”reverse;//反向排列向量的从头到尾的元素6、获得vector的大小1)使用size返回向量的大小,即元素个数。

vector是一种简单高效的容器,具有自动内存管理功能。对于大小为n的vector容器,它的元素下标是0~n-1。
vector有二个重要方法:
begin(): 返回首元素位置的迭代器。
end(): 返回最后一个元素的下一个元素位置的迭代器。
1、 vector对象创建的几种方式。
1)不指定容器元素个数。
vector<double> v;
2)指定容器元素个数。
vector<double> v(10); //10个元素
3)指定容器元素个数并初始化。
vector<double> v(10, 7.8); //10个元素,初始化为7.8
2、访问和遍历vector容器
1)下标方式访问vector元素并赋值。类似数组的访问和赋值
v[0] = 3.6; v[3]=5.5;
2)使用迭代器配合循环对vector进行遍历访问

1 vector<double> v(3);
2 v[0] = 1.2;
3 v[1] = 6.1;
4 v[2] = 3.7;
5 vector<double>::iterator it;
6 for(it=v.begin(); it!=v.end(); it++)
7 {
8     cout<<*it<<endl;
9 }

3、 向vector中添加元素

1) 向vector容器的尾部追加新元素。
v.push_back(new_element);
2) insert()方法在vector对象的任意位置前插入一个新元素,同时vector自动扩张一个元素空间,插入位置后的所有元素都向后挪动一个位置。
v.insert(v.begin()+2, 12.5); //在第二个元素前插入新元素12.5。
v.insert(v.end(), 6.5); //在容器的末尾加入了新元素6.5。
4、元素的删除
1) 删除一个元素或一段区间中所有元素
v.erase(v.begin()+2); //删除第二个元素,从0开始计数
v.erase(v.begin()+1, v.begin()+5); //删除第1~5中的所有元素。
2) 删除vector中所有元素
v.clear(); //删除v中的所有元素
5、对vector中元素排序
1) sort()对元素排序。需要头文件”#include <algorithm>”
sort(v.begin(), v.end()); //sort()默认升序排序

1 //自己设计比较函数进行排序
2 bool comp(const int &a, const int &b)
3 {
4     return a>b;
5 }
6 sort(v.begin(), v.end(), comp);            //元素降序排列

2)reverse()反向排列。需要头文件”#include <algorithm>”

reverse(v.begin(), v.end()); //反向排列向量的从头到尾的元素
6、获得vector的大小
1) 使用size返回向量的大小,即元素个数。
v.size(); //返回v的元素个数
2) empty()判断向量是否为空。
v.empty(); //v如果为空,则返回逻辑真,即1,否则返回逻辑假0。
参考文献:
曾宗根, ACM程序设计, 北京大学出版社, 2008.11

免责声明:文章转载自《C++中vector 容器的基本操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用swap file的方式为linux添加swapC#与数据库有关的控件和属性下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++ 迭代器失效问题

今天同学华为面试被问到vector有什么问题了,我一拍脑门,vector有什么问题?? 原来是迭代器失效问题。先看看vector中: void test_vector_erase(){ vector<int> v = {1,2,3,4,5}; for(auto it = v.begin(); it != v.end(); it+...

触发器实现多表之间的增加、删除及更新

注:本文参考http://blog.sina.com.cn/s/blog_a0912d340101gxhb.html 常见的触发器有三种:分别应用于Insert,Update,Delete事件。 1.数据同步增加:如有两张表:A表和B表,创建触发器使当A表插入数据后B表也同步插入数据。其中B表插入数据的字段需要同A表中的字段相对应。 1 create tr...

C++ 迭代器(STL迭代器)iterator详解

要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行,迭代器是一个变量,相当于容器和操作容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类型。 迭代器按照定义方式分为以下四种: 正向迭代器,定义方式: 容器类名::iterator 迭代器名; 常量正向迭代器,定义方式...

动态将ADOQuery数据移植到ClientDataSet通用函数

昨天做程序突然想到的,如果您会使用内存表就不需要此例了,可以参考一下,代码如下: //******************************************************************************// 函数功能: 执行SQL查询语句,影响ClientDataSet控件// 函数名称: cf_dbSelectSQ...

C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

摘要本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和具体的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动态数组)STL vector进行分析和总结。 引言由于前段时间对台大的机器学习基石和技法课程进行了学习,发现在具体的实现中常常涉及到各种类型的数据结构,比...

awk getline命令

转自:http://www.cnblogs.com/276815076/archive/2011/12/05/2276605.html awk输入命令getline getline为awk所提供的输入命令如果找到一条记录则getline返回1,如果到了文件结束(EOF)则返回0,如果错误则返回-1A.getline从整体上来说,应这么理解它的用法:当其左...