c++ vector

vector是一个c++模板标准库,它是一个可以指定数据元素的顺序表。

需要引用头文件vector

00:

默认以vector<int>举例

以下为我在后文测试过程中使用的非库函数。

001:print

void print(vector<int>m)
{
	for (vector<int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

01: 初始化

        001:  vector<int>m;

                初始化一个空表

        002:vector<int>m={0,1,2,3,4,5};

                表中有六个元素0,1,2,3,4,5

         003:vector<int>m2=m1;

                其中m1为以初始化的顺序表,m1类型需与m2相同

注意

可以看出通过顺序表来初始化顺序表时,不是c风格的地址拷贝,而是而是通过赋值新建一个顺序表

        004:vector<int>m(int num,int value)

                此时m中有num个value元素。

        005:vector<int>m(vector<int>::iterator  begin,vector<int>::iterator end)

               从begin开始,把begin到end中的元素拷贝到m中,不包括end指向的元素

测试

02:赋值

        严格的说,c/c++中初始化与赋值并不相同,二者存在细微差异。

        001:m={1,2,3,4,5};

                给m赋值为{1,2,3,4,5}

        002:m2=m1;

                给m2赋值为m1中的值。

        003:m.assign(int num,int value);

               给m3赋值为num个value。

        004:m.assign(vector<int>::iterator begin,vector<int>::iterator end)

                 从begin开始,把begin到end中的元素拷贝到m中,不包括end指向的元素

测试:

03: 增删查改

        001:增加元素

                0001:push_back()尾插

m.push_back(int value);

向顺序表末尾插入value

因为vector<int>类型的m是顺序表,所以尾插一定是效率最高的插入方式

                0002:inster()指定位置插入

m.inster(bector::iterator it,int value)

向it下标插入value元素,其余的的可以理解都成往后退一位。

m.inster(bector::iterator it,vector<int>::iterator begin,vector<int>::iterator end)

把begin到end的元素拷贝到it之前

        002:删除元素

                 0001:尾删

m.pop_back()            

删除末尾元素。

效率最高的删除方式

                0002:指定位置删除   

m.erase(vector<int>::iterator begin,vector<int>::iterator end)

把从begin到end的元素删除,不包括end执行的元素。

                0003:清空顺序表

m.clear()

删除整个顺序表

        003:查找元素

 find(vector<int>::iterator begin,vector<int>::iterator end,int targe)

从begin开始找targe,会返回一个迭代器,指向目标元素,没找到的话会指向end

        004: 修改元素

m1.at(int num)=x;

m1[num]=x;

以上两种操作均可把m1种num下标的元素改为x

测试

04:其他常用函数

        有的需要头文件algorithm

  1. begin             活动顺序表开头的迭代器
  2. capacity         获取当前顺序表的容量
  3. copy               拷贝元素
  4. reserve           修改容量,只能让容量变大
  5. end                获取顺序表末尾元素的下一个元素的迭代器,该值不为有效值
  6. size               获取当前顺序表有效元素个数
  7. sort               排序
  8. swap            交换

05:修改容量,使变小

当有效元素个数远小于容量是,会有内存浪费。

举例

可以使用匿名顺序表重写初始化在交换值进行修改容量

代码:vector<int>(m).swap(m);

感谢观看!!!

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值