C++ 标准库类型之vector类型

vector是同一种类型的对象的集合,每个对象都有一个对应的证书索引值。和string对象一样,标准库将负责管理与存储元素相关的内存,我们把vector称为容器,因为他可以包含其他对象。一个容器中的所有对象必须是同一种类型

使用vector之前,必须包含相应的头文件。

vector是一个类模板(class template)使用模板可以编写一个类定义或函数定义,而用于多个不同数据类型。因此 我们可以定义保存string对象的vector,或保存int值得vector 又或是保存自定义的类类型对象;

声明从类模板产生的某种类型的对象,需要提供附加信息,信息的种类取决于模板。以vector为例,必须说明vector保存何种对象的类型,通过将类型放在类模板名称后面的尖括号中来指定类型。

vector<int> ivec;

和其他变量一样 定义vector对象 要指定类型和一个变量的列表。上面的第一个定义,类型是vector<int> 该类型即是含有若干int类型对象的vector,变量名为ivec。

1.vector对象的定义与初始化

vector类定义了好几种够着函数 用来定义和初始化vector对象

vector<T> v1; vector保存类型为T的对象,默认构造函数v1为空

vector<T> v2(v1);v2是v1的一个副本

vector<T> v3(n,i)v3包含n个i的元素

vector<T> v4(n);v4含有初始化的元素的n个副本

 1 创建确定个数的元素

若要创建非空的vector对象,必须给初始化元素的值。当把一个vector对象复制到另一个vector对象时,新复制的vector中每一个元素都初始化为原vector中相应的副本 但这两个vector对象必须保存同一种元素类型

vector<int> ivec1;

vector<int> ivec2(ivec1);

vector<string> svec(ivec1);这个是错误的元素类型不同

vector<int> ivec4(10,-1);创建一个包含10个元素 每个元素都初始化为-1

vector<string> svec(10,"hi!");10个每个都初始化为"hi!"

2 值初始化

如果没有对值进行初始化 那么标准库将自行提供一个元素初始值进行值初始化。这个库生成的初始值将用来初始化容易中的每个元素。具体取决于vector中存储的数据类型。

vector<int> ivec(10)  //初始化10个0

如果vector保存的是含有构造函数类类型的元素,标准库将用该类型的默认构造函数初始化

vector<string> svec(10)//初始化10个空串

第三种可能性 元素类型可能没有定义任何构造函数的类类型。这种情况下标准库仍然产生一个带初始值的对象,这个对象的每个成员进行了初始化。

3vector对象的操作

v.empty()

v.size()

v.push_back(t) 在末尾中加入一个值为t的元素

v[n]返回v中位置为n的元素

v1=v2把v1中替换为v2的元素的副本

v1==v2 如果v1与v2相等 则返回true

1vector的size

empty和size 操作类似于string类型的相关操作 成员函数size返回相应的vector类定义的size_type的值

2.向vector中添加元素

string word;

vector<string> text;

text.push_back(word);

3.vector的下标操作

for(vector<int>::size_type ix=0;ix!=ivec.size();++ix)

ivec[ix]=0;

4.下列操作不添加元素

vector<int> ivec;

for(vector<int>::size_type ix=0;ix!=10;++ix)

{

ivec[ix]=ix;

}

上面的操作是不会添加进入元素的

原文链接: https://www.cnblogs.com/simp/p/12190279.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ 标准库类型之vector类型

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/191938

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午5:52
下一篇 2023年2月12日 下午5:52

相关推荐