由一段代码说开去——vector

 1 #include <iostream>//包含cin cout

 2 #include <vector>//包含向量 vector

 3 #include <numeric>//包含算法 accumulate

 4 #include <algorithm>//包括stl的很多算法

 5 #include <cstdlib>

 6 using namespace std;

 7 bool cmp(const int &a,const int &b)//这里参数类型要是const型的  8 {

 9   if(a!=b)//这里判断的意思就是说 如果a>b 结果就为真 否则就为假

10     return a>b;

11   else

12     return a>b;

13 }

14 int main()

15 {

16   vector<int> v;//定义一个向量v;

17   int i;

18   for(i=0;i<10;i++)

19   {

20     v.push_back(i);//尾部元素扩张方式赋值

21   }

22   vector<int>::iterator it=v.begin();

23   //定义了一个指向vector<int>类型的 迭代器  begin()方法返回首地址;

24   v.insert(v.begin()+2,10);

25   //把迭代器所指的位置的元素 以及之后的元素 向后移动  一个单位 并将第一个参数指向的位置赋值为第二个元素

26   sort(v.begin(),v.end());

27   

28   for(;it!=v.end();it++)//使用iterator迭代器顺序遍历所有的元素

29   {

30     cout<<*it<<" ";//记住it用 == 与!=运算较好  

31     //it可以进行 自增运算  end()方法返回的是 vector的最后一个元素的下一个迭代器;

32     //it可以与* 连用

33   }

34   cout<<endl;

35   //sort(v.begin(),v.end(),cmp);//这里sort函数很像qsort()函数呀

36   cout<<accumulate(v.begin(),v.end(),0)<<endl;
37 //这个地方统计指定区间元素的和 0是什么意思呢 我也不知道 38 system("pause"); 39 return 0; 40 }

   由一段代码说开去——vector

       首先vector属于顺序容器,和c语言里面的数组 功能和使用方法类似;

1.创建 

(1) vector是一个模版类 这样创建的时候 就需要指定类型了;类型可以是基本类型 也可以是用户自定义的结构体 类等

举例: vector<int> v;就创建了一个元素类型是int的 “向量” v(这里书上叫它向量 不明白为什么)

 (2)这里构造函数呢,还有几种重载 0参数 1参数 和2参数;

0参数:就是定义一个自定义长度的vector;如上例子

1个参数:指定vector的其实元素个数,后面还可以根据元素的加入 自动调整大小;eg:vector<int> v(10);

2个参数:vector<char> v(10,'c')构建一个含有10个'c'的向量v

 

2.操作:包括基于vector的尾部扩张 随机访问 排序和基于元素位置的插入,删除,

关于位置的操作传的参数都是迭代器变量 (迭代器类型挺多,但不知道分类做什么 一刀切多好)

其中 vector本身自己就有两个个方法begin()和end()是用来返回 vector的首元素和 尾元素的下一个位置的迭代器

(1)尾部元素扩张:push_back();函数也是vector()的成员方法;接受一个参数 作为添加到末尾的元素;

(2)随机访问:[]和* 两个函数可以使vector在随机访问的场合取代数组;两者分别是下标法和类指针法;

*后面要跟一个类型一致的迭代器变量 遍历呢可以用i++,也可以使用 迭代器自增

(3)排序:sort()有两个版本的重载,这个函数是模版stl函数 不是成员方法  前两个参数传递需要排序的区间(用迭代器标记),如果有第三个参数 那么它就是(比较函数的)函数指针

否则默认按照升序排列

(4)插入函数:insert();是成员方法,接受两个参数 第一个传递插入的位置,第二个传递插入的元素值

(5)删除函数:erase();也是成员函数,可以删除一个点,也可以删除一个区间,所以有两个版本,一个接受一个迭代器做参数 另一个接受一个迭代器区间

另外,还有求向量大小的成员函数 size(),判空的成员方法empty(), 逆置的stl函数revese();

小结:vector为了功能和数组类似,其包括的成员方法有push_back(),begin(),end(),insert(),erase(),clear()size(),empty();还有操作符函数* 和[],

非成员方法接受的参数大多有迭代器。

你可能感兴趣的:(vector)