C++primer 3.3 标准库类型 vector
来源:互联网 发布:python base64 解码 编辑:程序博客网 时间:2024/04/30 13:28
- 一vector对象的定义
- 二vector对象的初始化
- 三vector对象的操作
一、vector对象的定义
- vector 是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string一样,标准库将负责管理与存储元素相关的内存。
- vector称为容器,里面所有的对象必须同一类型。
- 使用vector之前,必须包含相应的头文件 # include using std::vector
- vector是一个模板,不是数据类型。使用模板可以编写一个类定义或函数定义,用于多个不同的数据类型,必须说明vector保存何种对象的类型:vector ivec;
二、vector对象的初始化
- vector定义了好几种构造函数来定义和初始化vector对象。
函数如下: 注意:第一个和第四个的区别,第一个是空的vector,第四个是有n个元素的vector
vector v1 ; //保存为T类型的对象,默认构造函数v1为空;
vector v2(v1) ; //前提是v2和v1类型相同;
vector v3(n,i);
vector v4(n) ;//v4 默认初始化,有n个元素,什么值取决于T类型- 可以用元素个数和元素值对vector对象进行初始化。构造函数用元素个数来决定vector对象保存的元素的个数。
- vector对象动态增长
a . vector对象和string对象一样,大小都是可变的。
b. vector对象重要性在于可以在运行时高效地添加元素,最好动态添加。
c. 这种方式不同于C语言中的内置数据类型,由于vector连续存储,所以希望最好是预先分配好合适的空间。
d. 给定元素个数的vector对象预先分配了内存,但更有效的方法是先初始化一个空vector对象,然后再动态地增加元素。 - vector值的初始化
a. 如果没有指定元素的初始化,标准库将自行提供一个初始值进行初始化,具体什么值取决于vector中元素的数据类型;
b. 保存的是内置类型,默认初始化为0
vector<int> fevc1; //没有初始化,fevc1是空的vector<int> fevc(10); //10个元素,皆为0vector<string> sevc(10); //10个元素,皆为空的string
三、vector对象的操作
- 常用的操作:v.empty() 、 v.size 、v.push_back
- empty操作和string里面的类似;
- size操作返回的相应的vector类定义的size_type的值
向vector中添加元素—- push_back()操作
push_back()操作接受一个元素值,并将它作为一个新的元素添加到vector对象的后面,也就是“插入”到vector对象的后面。下标操作 — vector的下标操作类似于string的 可以用来读取元素。
下标操作不添加元素
a. 我们不能通过下标操作来对vector里面添加元素。
b. 必须是已经存在的元素才能用下标操作符来进行索引,通过下标操作进行赋值,不会添加任何元素。
c. 往vector里面添加元素正确写法 用push_back注意:这里指的是往里面添加元素的时候是不能通过下标来的,但是如果里面有元素,那么是可以通过*下标来赋值修改的*
// 试图在ivec中插入10个新元素,元素依次是0-9的整数,下标操作只能用于 //获取已经存在的元素,而这里的ivec是空的vector对象。vector<int> ivec; //空的vector对象for(vector<int>::size_type ix==0;ix!=10;ix++) { ivec[ix]=ix; //错误 下标操作只能用来索引!!!! cout<<ivec[0]; //错误!!!!ivec是空的,如果非空就可以 }
//正确添加vector元素的方法vector<int> ivec; //空的vector对象for(vector<int>::size_type ix==0;ix!=10;ix++) { ivec.push_back(ix); }
//不能通过下标进行添加元素,但是如果里面有元素是可以通过下标修改的 // 这里的ivec不是空的vector对象。vector<int> ivec(10); //默认初始化,全部初始化为0for(vector<int>::size_type ix==0;ix!=10;ix++) { ivec[ix]=ix; //可以,因为容器里面有元素的!!! cout<<ivec[ix]<<endl; //正确!!! }
//size 函数的使用 int main (){string str1("hello");string str;vector<string> vec_str;while(cin>>str){vec_str.push_back(str);}cout<<str1.size()<<endl; //string对象的长度,里面元素个数cout<<vec_str.size()<<endl; //vector中元素的个数return 0;}//输入 :a b c bc de fg//输出:5 6
//push_back的使用 int main (){string result_str;vector<string> str;while(cin>>result_str){str.push_back(result_str);} return 0;}
0 0
- C++primer 3.3 标准库类型 vector
- c++primer学习笔记(3.3)标准库vector类型
- c++primer笔记--3.3标准库类型vector
- c++primer学习笔记-----3.3标准库类型vector
- C++Primer——标准库vector(容器)类型
- linux & C++Primer 学习笔记--标准库vector类型
- 【C++ Primer】标准库vector类型
- c++ primer 标准库类型 vector
- 标准库类型vector--《C++ primer》
- C++ primer 四 标准库类型vector
- C++Primer 标准库类型
- C++,标准库类型vector
- C++primer(第五版)第三章中标准库类型Vector、迭代器和数组
- C++ Primer 第三章 标准库vector类型
- 【C++ Primer每日刷】四 标准库类型vector
- c++ primer学习笔记3-标准库类型string&vector
- C++ Primer(第四版)笔记2 标准库vector类型
- C++ primer阅读笔记之标准库vector类型学习
- linux 编译strip减小程序大小
- 向量空间模型
- 查看正在锁定的事务
- 遇到问题----connect() failed (111: Connection refused) while connecting to upstream解决
- Android之四大组件
- C++primer 3.3 标准库类型 vector
- Linux scp 使用详解
- PHP 数据表相关
- 配置mysql数据库允许外部ip访问
- SpringMVC简介及第一个HelloWorld
- 另一种将有分隔符的数据导入到临时表中的方案
- 理解ThreadLocal
- ln: creating symbolic link XX : Operation not supported(Linux下对windows文件创建软链接失败)
- 获取ini文件中所有块的特定字段值