C++中常用的两种创建动态数组方法:new()和vector.

C++中常用的两种创建动态数组方法:new()和vector.

 1、new 方法:int *p=new int[num];创建一个容量为num的int型数组,num可来自外部输入、函数传递等,int型指针p指向动态数组的首地址,在动态数组创建完成后,我们可以下标访问数组元素:p[0],p[1]...,但是new方法不能创建二维数组,只能创建一维数组,并且创建后数据元素操作缺乏灵活性;用得最多的地方当属创建链表结点

 2、vector容器:能够存放任意类型的动态数组(C++中更加常用,注意Java中的是Vector类),常用基本操作:      

          (1)头文件#include<vector>.

          (2)创建一维vector对象,vector<int> vec;二维vector<vector<int>> vec2;

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

          (4)尾部元素弹出:vec.pop_back();相当于删除尾部元素;

          (5)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的,和数组的访问形式一样。

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

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

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

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

          (9)清空:vec.clear();

          (10)初始化赋值:
   vector c1(c2)      // 复制一个vector(c2也是一个vector)
   vector c(n)        // 创建一个vector,含有n个数据,数据均已缺省构造产生
   vector c(n, elem) // 创建一个含有n个elem元素的vector
   vector c(beg,end) // int array[]={1,2,3},beg=array,end=array+3,用数组为vector赋值

         (11)判断是否为空:vec.empty();

自定义排序时:sort(vec.begin(),vec.end(),Comp);Comp可以自定义。

另附C++标准容器分类表(网上有多个版本,我认为这个更容易理解):

标准容器类

特点

顺序性容器

vector

从后面快速的插入与删除,直接访问任何元素

deque

从前面或后面快速的插入与删除,直接访问任何元素

list

双链表,从任何地方快速插入与删除

关联容器

set

快速查找,不允许重复值

multiset

快速查找,允许重复值

map

一对多映射,基于关键字快速查找,不允许重复值

multimap

一对多映射,基于关键字快速查找,允许重复值

容器适配器

stack

后进先出

queue

先进先出

priority_queue

最高优先级元素总是第一个出列

参考:

https://blog.csdn.net/Jin_Kwok/article/details/51361575

   

猜你喜欢

转载自blog.csdn.net/cuiy0818/article/details/81503172
今日推荐