数据结构2

  vector 容器,向量

一、  能存放任意类型的动态数组,能增加和压缩数据

  注:如果表示向量长度较长(向量内部保存很多数)容易导致泄露,效率很低

二、写法: double  Distance(vector< int> & a,vector < int >&b)  其中“ & ”不能少

实例;

vector<int>test;  建立一个vector,int 为数组元素的数据类型,test 为动态数组名

   vector < int > test ; //建立一个vector  (一维数组)

test.push_back(1);

test.push_back(2);  //把1 2 压入vector 中 test [0]是 ‘ 1 ’    test [1]是 ‘ 2 ’ 

vector<vector<point2f>>points;  定义一个二维数组

points[0].size();  //第一行的列数

1、基本操作

1、头文件: #include<vector>

2、创建vector对象: vector<int> vec;

3、尾部插入数字: vec.push_back(a);

4、使用下标访问元素: cout<<vec[0]<<endl;

5、使用迭代器访问元素   eg:

vector<int>::iterator it;

for( it=vec.begin(); it!=vec.end(); it++ )

{

    it=vec.begin(); it!=vec.end(); it++

 cout <<*it<<endl;

}

6、插入元素:vec.insert(vec.begin()+i,a);   在i+个元素前插入a

7、删除元素:vec.erase(vec.begin()+2); 删除第3个元素

vec.erase(vec.begin()+i,vec.end()+ j ); 删除区间从[ i,j-1]; 区间从0开始

    front() 访问某一个元素(第一个元素)  back() 访问最后一个元素

    begin() 表示第一个元素     end() 表示最后一个元素

8、向量大小: vec.z=size();

9、清空: vec.clear(); (清空所有元素)

重说明:

  vector中元素不仅可为  int  double  string  还可以为结构体  注意,结构体要定义为全局,否则会出错

 三、算法:逆序排序

1、使用 reverse 将元素翻转;需用头文件  #include <algorithm>

eg:

    reverse ( vec.begin( ) , vec.end( ) );  将元素翻转,即 “ 逆至 ”排序

升序排序    sort排序

 头文件:#include<algorithm>

  sort( vec.begin( ) , vec.end( ) );  默认升序(从小到大)

降序排序

bool  comp (const int &a,const int & b )

{

  return a>b;

}

调用降序: sort (vec.begin(), vec.end(),comp)

vector  中的push_back的用法和作用

push_back  简单作用是在字符串结尾插入一个字符

push_back 它在c++中的vector头文件里面

在vector类中它的作用是在此类尾部加一个数据

string中也有它,作用是字符串后插如一个字符  

  push_back  函数原型

void push_back( value_type_ch ); 

void push_back (value_type_ch);

参数_ch  意思是“ 这个字符将被添加到字符串末尾

eg:

  void push_back (const_ty&_x)

{

  insret ( end (),_x );  在后面添加_x字符

}

原文地址:https://www.cnblogs.com/leiminghui/p/9495550.html