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

简介: 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;

}

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

目录
相关文章
|
1天前
|
C++
c++ sting类型比较大小(文本数值大小比较)
c++ sting类型比较大小(文本数值大小比较)
|
1天前
|
JSON Linux C语言
全网最权威唯一值得推荐的《C/C++框架和库》
关于C++框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。
13 1
|
2天前
|
C++ 容器
【C++】Vector -- 详解(下)
【C++】Vector -- 详解(下)
|
2天前
|
存储 Linux C++
【C++】Vector -- 详解(上)
【C++】Vector -- 详解(上)
|
3天前
|
C++
C++程序中的结构体类型
C++程序中的结构体类型
9 1
|
6天前
|
存储 安全 C语言
C++|多态性与虚函数(1)功能绑定|向上转换类型|虚函数
C++|多态性与虚函数(1)功能绑定|向上转换类型|虚函数
|
8天前
|
Linux Shell 开发工具
C++ 的 ini 配置文件读写/注释库 inicpp 用法 [ header-file-only ]
这是一个C++库,名为inicpp,用于读写带有注释的INI配置文件,仅包含一个hpp头文件,无需编译,支持C++11及以上版本。该库提供简单的接口,使得操作INI文件变得容易。用户可通过`git clone`从GitHub或Gitee获取库,并通过包含`inicpp.hpp`来使用`inicpp::iniReader`类。示例代码展示了读取、写入配置项以及添加注释的功能,还提供了转换为字符串、双精度和整型的函数。项目遵循MIT许可证,示例代码可在Linux环境下编译运行。
40 0
|
8天前
|
机器学习/深度学习 JSON 编译器
C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理
C++ 资源列表,内容包括: 标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等
55 1
|
8天前
|
编译器 C++ Windows
【C++】vector问题解决(非法的间接寻址,迭代器失效 , memcpy拷贝问题)
不使用memcpy函数不就可以了,然后我们使用简单粗暴的赋值拷贝,这样就不会发生浅拷贝问题了!!!
21 1
|
1天前
|
设计模式 安全 Java
【C++】特殊类设计
【C++】特殊类设计