标准库类型vector--《C++ primer》
2014-12-10 11:39
183 查看
标准库类型vector
定义:标准库类型vector表示所有的对象的类型都相同的对象的集合,集合中的每个对象都有一个与之对应的索引,索引用于访问对象.因vector"容纳着"其他对象,故被称为容器.
vector是一个类模板,模板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。
vector对象的定义和初始化
列表初始化vector对象
值初始化
所谓值初始化就是当用户提供vector对象而未指定初始值时,库会创建一个值初始化的元素初值来赋给它的所有元素.
如:vector<int> s(10); //10个元素初始化为0
但此方式有两种限制:
<1>当必须要有初始值而vector对象又不支持默认初始化时,这时必须提供初始值.
<2>当只提供初始值的数量而未设定初始值.(如:vector<int> a=10;就是错误的).
初始化有时依赖于传递初始值时用的花括号还是圆括号
vector<int> a1=(10); //10个元素,默认初始值为0
vector<int> a1={10}; //一个元素,初始值为10
当初始化使用花括号的形式但提供的值又不能用于列表初始化,这是就是要用此值来构造vector对象了
vector<string> s1{"Hello"}; //列表初始化
vector<string> s2{10}; // 10个默认初始化元素
vector<string> s3{10,"Hello"}; //10个初始化值为Hello的元素
类型为string的vector对象s2,s3中用int类型的元素来初始化string类型的元素,不符合值与元素类型类型相同要求,故不是列表初始化而是给定值来构造vector对象.
若直接想vector对象中添加元素一般是数量较少,初始值是另一对象的副本或者所有元素初始值都一样,但是当向vector对象中批量添加元素时,直接初始化就显得笨拙了.这是可以运用push_back()向其添加元素
vector对象的一些操作
注:下标操作不能添加元素。因为下标只能用于获取已存在的元素,而当一个空对象没有元素时,是无法通过下标操作获取元素的。已存在的元素才能用下标操作进行索引,而通过下标操作赋值时,不会添加任何元素。
若直接想vector对象中添加元素一般是数量较少,初始值是另一对象的副本或者所有元素初始值都一样,但是当向vector对象中批量添加元素时,直接初始化就显得笨拙了.这是可以运用push_back()向其添加元素始化有时依赖于传递初始值时用的花括号还是圆括号
vector<int> a1=(10); //10个元素,默认初始值为0
vector<int> a1={10}; //一个元素,初始值为10
当初始化使用花括号的形式但提供的值又不能用于列表初始化,这是就是要用此值来构造vector对象了
vector<string> s1{"Hello"}; //列表初始化
vector<string> s2{10}; // 10个默认初始化元素
vector<string> s3{10,"Hello"}; //10个初始化值为Hello的元素
类型为string的vector对象s2,s3中用int类型的元素来初始化string类型的元素,不符合值与元素类型类型相同要求,故不是列表初始化而是给定值来构造vector对象.得瑟缺本身vector对象的定义和初始化vector对象的定义和初始化定义:标准库类型vector表示所有的对象的类型都相同的对象的集合,集合中的每个对象都有
一个与之对应的索引,索引用于访问对象.因vector"容纳着"其他对象,故被称为容器.
vector是一个类模板,模板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。量的列表。板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指vector是一个类模板,模板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。定类型和一个变量的列表。板,模板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。
定义:标准库类型vector表示所有的对象的类型都相同的对象的集合,集合中的每个对象都有一个与之对应的索引,索引用于访问对象.因vector"容纳着"其他对象,故被称为容器.
vector是一个类模板,模板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。
vector对象的定义和初始化
(1) vector<T> v1; //类型为T的对象v1为空 (2) vector<T> v2(v1); // v2是v1的一个副本 (3) vector<T> v3(n,i); //v3包含n个值为i的元素 (4) vector<T> v4(n); //v4含有值初始化的元素的n个副本 (5) vector<T> v5(a,b,c,d...); //v5含有相应初始值元素和对应的初始值
列表初始化vector对象
vector<string> str("AAA","BBB","CCC");
值初始化
所谓值初始化就是当用户提供vector对象而未指定初始值时,库会创建一个值初始化的元素初值来赋给它的所有元素.
如:vector<int> s(10); //10个元素初始化为0
但此方式有两种限制:
<1>当必须要有初始值而vector对象又不支持默认初始化时,这时必须提供初始值.
<2>当只提供初始值的数量而未设定初始值.(如:vector<int> a=10;就是错误的).
初始化有时依赖于传递初始值时用的花括号还是圆括号
vector<int> a1=(10); //10个元素,默认初始值为0
vector<int> a1={10}; //一个元素,初始值为10
当初始化使用花括号的形式但提供的值又不能用于列表初始化,这是就是要用此值来构造vector对象了
vector<string> s1{"Hello"}; //列表初始化
vector<string> s2{10}; // 10个默认初始化元素
vector<string> s3{10,"Hello"}; //10个初始化值为Hello的元素
类型为string的vector对象s2,s3中用int类型的元素来初始化string类型的元素,不符合值与元素类型类型相同要求,故不是列表初始化而是给定值来构造vector对象.
若直接想vector对象中添加元素一般是数量较少,初始值是另一对象的副本或者所有元素初始值都一样,但是当向vector对象中批量添加元素时,直接初始化就显得笨拙了.这是可以运用push_back()向其添加元素
#include <iostream> #include <vector> using namespace std; int main() { vector<int> v2; for(int i=0;i!=100;++i) v2.push_back(i); for(int i=0;i!=100;++i) { if(i%10==0) cout << endl; cout<<i <<' '; } return 0; }
vector对象的一些操作
v.empty() //若v为空,则返回true,否则返回false。 v.size() //返回v中元素的个数 v.push_back(t) //在v的末尾增加一个值为t的元素 v //返回v中位置为n的元素,从0开始计数。 v1=v2 //把v1元素替换为v2中元素的副本 v1==v2 //若v1,v2相等则返回true,否则返回false !=, < , <= , > , >= //与C语言类似.
注:下标操作不能添加元素。因为下标只能用于获取已存在的元素,而当一个空对象没有元素时,是无法通过下标操作获取元素的。已存在的元素才能用下标操作进行索引,而通过下标操作赋值时,不会添加任何元素。
若直接想vector对象中添加元素一般是数量较少,初始值是另一对象的副本或者所有元素初始值都一样,但是当向vector对象中批量添加元素时,直接初始化就显得笨拙了.这是可以运用push_back()向其添加元素始化有时依赖于传递初始值时用的花括号还是圆括号
vector<int> a1=(10); //10个元素,默认初始值为0
vector<int> a1={10}; //一个元素,初始值为10
当初始化使用花括号的形式但提供的值又不能用于列表初始化,这是就是要用此值来构造vector对象了
vector<string> s1{"Hello"}; //列表初始化
vector<string> s2{10}; // 10个默认初始化元素
vector<string> s3{10,"Hello"}; //10个初始化值为Hello的元素
类型为string的vector对象s2,s3中用int类型的元素来初始化string类型的元素,不符合值与元素类型类型相同要求,故不是列表初始化而是给定值来构造vector对象.得瑟缺本身vector对象的定义和初始化vector对象的定义和初始化定义:标准库类型vector表示所有的对象的类型都相同的对象的集合,集合中的每个对象都有
一个与之对应的索引,索引用于访问对象.因vector"容纳着"其他对象,故被称为容器.
vector是一个类模板,模板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。量的列表。板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指vector是一个类模板,模板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。定类型和一个变量的列表。板,模板本身不是类或函数,编译器根据模板创建类或函数的过程称为实例化,定义vector的对象需要指定类型和一个变量的列表。
相关文章推荐
- C++ Primer 学习笔记——第3章:标准库类型 vector
- 读书笔记:C++ Primer系列(6)—— 标准库类型之vector
- c++ primer 标准库类型 vector
- 【C++ Primer】【学习笔记】【第三章】标准库类型之:vector类型
- 《c++ primer》学习笔记 第三章 标准库类型(string, vector,bitset)
- 《C++ Primer》读书笔记-第三章 03 标准库类型vector
- C++ Primer 学习笔记_7_标准库类型(续1) -- vector类型
- c++学习笔记--C++Primer第4版--标准库类型vector
- C++ Primer学习笔记- 第三章:标准库类型之四
- C++ primer 第三章 标准库类型
- C++ Primer 【第四版】第三章 标准库类型
- 关于C++中标准库类型:vector(下)
- C++学习笔记--标准库类型(vector,iterator,bitset)(一)
- C++ primer 读书笔记系列——(2)标准库vector类型
- 初识标准库类型vector
- 【C++学习笔记】标准库类型vector
- 【C++ Primer学习笔记】第3章:标准库类型
- C++ Primer学习笔记:C++ 常用标准类型小结
- C++ Primer 第三章 标准库类型
- 第一部分 基本语言 第三章 标准库类型(3.3标准库vector类型)