标准库类型vector

标准库类型vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。因为vector“容纳着”其他对象,所以它被称为容器。

要想使用vector,必须包含适当的头文件。#include<vector>

C++语言既有类模板,也有函数模板 ,其中vector是一个类模板。

模板本身不是类或函数,相反可以将模板看作为编译器生成类或者函数编写的一份说明。编译器根据模板创建类或函数的过程成为实例化,当使用模板时,需要指出编译器应把类或函数实例化为何种类型。

对于类模板,我们通过提供一些额外的信息来指定模板到底实例化成什么样的类,需要提供哪些信息由模板决定。提供信息的方式总是这样:即在模板名字后面跟一对尖括号,在括号内放上信息。

以vector为例,提供的额外信息时vector内所存放对象的类型:

vector<int> ivec;   //Ivec保存int类型的对象

vector<Sales_item> Sales_vec;  //保存Sales_item类型的对象

vector<vector<string>> file;  //该向量的元素师vector对象

在上面的例子中,编译器根据模板vector生成了三种不同的类型:vector<int>、vector<Sales_item>和vector<vector<string>>。

vector能容纳绝大多数类型的对象作为其元素,但是因为引用不是对象,所以不存在包含引用的vector。除此之外,其他大多数(非引用)内置类型和类类型都可以构成vector对象,甚至组成vector的元素也可以是vector。

定义和初始化vector对象

和任何一种类类型一样,vector模板控制着定义和初始化向量的方法。

初始化vector对象的方法  

vector<T> v1      v1是一个空vector,它潜在的元素师T类型的,执行默认初始化

vector<T> v2(v1)    v2中包含有v1所有元素的副本

vector<T> v2=v1    等价于v2(v1),v2中包含有v1所有元素的副本

vector<T> v3(n,val)   v3包含了n个重复的元素,每个元素的值都是val

vector<T> v4(n)      v4包含了n个重复地执行了值初始化的对象

vector<T> v5{a,b,c....} v5包含了初始值个数的元素,每个元素被赋予相应的初始值

vector<T> v5={a,b,c...} 等价于v5{a,b,c...}

可以默认初始化vector对象,从而创建一个指定类型的空vector:

vector<string> svec;  //默认初始化,svec不含任何元素

看起来空vector好像没什么用,但是很快我们就会知道程序在运行时可以很高效地往vector对象中添加元素。事实上,最常见的方式就是先定义一个空vector,然后的当运行时获取到元素的值后再逐一添加。

标准库类型vector,布布扣,bubuko.com

时间: 2024-11-07 15:45:11

标准库类型vector的相关文章

C++ Primer笔记1_转义字符_标准库类型string_标准库类型vector

1.转义字符 一般有两种方式: \x后紧跟1个或多个十六进制数字.或\后紧跟1.2.3个八进制数字,当中数字部分是字符相应的数值. #include <iostream> using namespace std; int main() { bool b = 10; bool b1 = true; bool b2 = false; cout << b << endl; cout << b1 << endl; cout << b2 <

3.3 标准库类型 vector

#include<iostream> #include<vector> #include<string> using std::cout; using std::cin; using std::vector; using std::string; int main() { /*定义和初始化vector*/ vector <int> v1; //执行默认初始化,生成空的v1,不含有任何元素,潜在对象为int型 //空向量可以在程序运行时向里面添加元素 vect

标准库类型vector[C++ primer]

vector,表示对象的容器,所有对象类型相同. 定义及初始化: vector<int> a; //默认初始化,空vector,不含元素 vector<int> b(a); //等价于 b=a:b中包含a中所有元素的副本 vector<int> c(n, val); //包含n个重复元素,值均为val vector<int> c(n); //包含n个元素,值默认初始化 vector<int> d{a,b,c,d..} //包含初始值个数的元素,每

谈谈两种标准库类型---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 学习笔记_7_标准库类型(续1) -- vector类型

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

C++拾遗(二)——初窥标准库类型

本篇博文的开始,先介绍一道书上看到的智力题:有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸.有一台称重精准的天平,只是用一次天平的情况下如何找出比较重的那瓶药丸? 好了,直接公布答案.从药瓶#1取出一粒药丸,从药瓶#2取出两粒,从药瓶#3取出三粒,依此类推.如果每粒药丸均重1克,则称得总重量为210克(1 + 2 + … + 20 = 20 * 21 / 2 = 210),“多出来的”重量必定来自每粒多0.1克的药丸.药瓶的编号可由算式(weight - 210 gr

C++ Primer 学习笔记_8_标准库类型(续2) -- iterator

 标准库类型(三) --iterator 序言: 迭代器是一种检查容器内元素并遍历容器元素的数据类型. 所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作:因此,现代C++更倾向于使用迭代器而不是下标操作访问容器元素. 正文: 1.容器的iterator类型 每个标准库容器类型都定义了一个名为iterator的成员: [cpp] view plaincopyprint? vector<int>::iterator iter; vector<int>::ite

C++ Primer 学习笔记_9_标准库类型(续3) -- biteset

 标准库类型(四) --biteset 序言: 位是用来保存一组项或条件的yes/no信息[标识]的简洁方法. [cpp] view plaincopyprint? #include <bitset> using std::bitset; #include <bitset> using std::bitset; 正文: 1.bitset对象的定义和初始化 和vector对象不同的是:bitset类型对象的区别在于其长度而不是类型.在定义bitest时,要在尖括号中说明给出他的长

c++标准库类型

1.作用域操作符 例如,需要从标准输入读取数据时,就用 std::cin.这些名字都用了:: 操作符,该操作符是作用域操作符,它的含义是右操作数的名字可以在左操作数的作用域中找到.因此,std::cin 的意思是说所需要名字 cin 是在命名空间 std 中定义的. 2:命名空间 #include <string> #include <iostream> // using declarations states our intent to use these names from