c++ vector

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

需要引用头文件vector

00:

默认以vector举例

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

001:print

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

01: 初始化

        001:  vectorm;

                初始化一个空表

        002:vectorm={0,1,2,3,4,5};

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

         003:vectorm2=m1;

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

注意

c++ vector_第1张图片

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

        004:vectorm(int num,int value)

                此时m中有num个value元素。

        005:vectorm(vector::iterator  begin,vector::iterator end)

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

测试

c++ vector_第2张图片

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::iterator begin,vector::iterator end)

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

测试:

c++ vector_第3张图片

03: 增删查改

        001:增加元素

                0001:push_back()尾插

m.push_back(int value);

向顺序表末尾插入value

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

                0002:inster()指定位置插入

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

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

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

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

        002:删除元素

                 0001:尾删

m.pop_back()            

删除末尾元素。

效率最高的删除方式

                0002:指定位置删除   

m.erase(vector::iterator begin,vector::iterator end)

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

                0003:清空顺序表

m.clear()

删除整个顺序表

        003:查找元素

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

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

        004: 修改元素

m1.at(int num)=x;

m1[num]=x;

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

测试

c++ vector_第4张图片

04:其他常用函数

        有的需要头文件algorithm

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

05:修改容量,使变小

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

举例c++ vector_第5张图片

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

代码:vector(m).swap(m);

c++ vector_第6张图片

感谢观看!!!

你可能感兴趣的:(c++,开发语言)