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

时间: 2024-10-11 05:48:01

C++ 标准库类型之vector类型的相关文章

c/c++ 标准库 set 自定义关键字类型与比较函数

标准库 set 自定义关键字类型与比较函数 问题:哪些类型可以作为标准库set的关键字类型呢??? 答案: 1,任意类型,但是需要额外提供能够比较这种类型的比较函数. 2,这种类型实现了 < 操作. 答案1的详细说明:声明set时,除了给出元素类型外,还需要给出一个比较函数的类型,注意是类型,不是变量 方式1:使用decltype,注意后面必须有* multiset<Book, decltype(compareIsbn)*> bookstore(compareIsbn);//compar

发布一个stl标准库容器类(vector/list)的安全删除方法

话不多说,看代码. #include <functional> #ifndef ASSERT #include <cassert> #define ASSERT assert #endif /** * 释放对象列表 * @param items 对象列表 * @return */ template<typename array> void zero_array(array& items) { ASSERT(!items.empty()); if (!items.

C++ Primer 学习笔记_7_标准库类型(续1) -- vector类型

 标准库类型(二) --vector类型 引子: vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的内存. 我们将vector称之为容器,一个容器中的所有对象都必须是同一类型的! [cpp] view plaincopyprint? #include <vector> using std::vector; #include <vector> using std::vector; [模板] vector

谈谈两种标准库类型---string和vector

两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库类型string   1.定义和初始化string对象:初始化string对象的方式有 string s1   默认初始化,s1是一个空串   string s2(s1)   s2是s1的副本 string s2=s1   等价于s2(s1),s2是s1的副本 string s3("value&qu

把《c++ primer》读薄(3-3 标准库bitset类型)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. //开头 #include <bitset> using std::bitset; 问题1.标准库bitset类型(模版) 需要处理二进制位的时候,可以使用c++标准库提供的bitset类型,它也是类模版,类似vectro容器,唯一不同的是,bitset类型需要说明长度,使用常量表达式给出的整型字面值或者已经初始化的cosnt对象. bitset<32> bit;//从0到31位算的,bit的32位每位初始化为

C++(3)标准库类型

标准库类型(一)--命名空间using与string类型 引: 标准库类型是语言组成部分中更基本的哪些数据类型(如:数组.指针)的抽象! C++标准库定义的是高级的抽象数据类型: 1.高级:因为其中反映了更复杂的概念: 2.抽象:因为我们在使用时不需要关心他们是如何表示的,我们只需要知道这些抽象数据类型支持哪些操作就可以了. 正文: 一.命名空间的using声明 1. using std::cin; ::运算符的作用含义是右操作数的名字可以在左操作数的作用域中找到. 格式: [cpp] view

把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 相关的内存,因为vetcor是类模版,对应多个不同类型,比如int,string,或者自己定义的数据类型等. 程序开头应如下声明 #include <iostream> #include <vector> #include <string> using std::strin

C++标准库vector以及迭代器

今天看C++的书,出现了一个新的概念,容器vector以及容器迭代器. vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vector对象的定义和初始化 1 vector<T> v1 vector保存类型为T的对象.默认构造函数,v1为空 2 vector<T> v2(v1) v2是v1的一个副本 3 vector<T> v3(n,

C++标准库vector及迭代器

vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vector对象的定义和初始化 [cpp] view plain copy vector<T> v1             vector保存类型为T的对象.默认构造函数,v1为空 vector<T> v2(v1)         v2是v1的一个副本 vector<T> v3(n,