Primer (五)
来源:互联网 发布:傲剑九阴真经数据 编辑:程序博客网 时间:2024/06/08 18:38
Vector
1. vector 是一种类模板。需要<vector> using std::vector 有两种初始化方法:
vector<int> v(10,0); // 10个0vector<int> v{10,0}; // 10和0vector<int> v(10); // 10个默认0vector<int> v{10}; // 10
2. 主要操作有v.empty() v.size() v[n] v.push_back()
v.size() 类型为 vector<int>::size_type
for (auto i:v) { cout<<i; // 可以访问,不能改变}for (auto &i:v) { i++; // &i引用才能改变vector元素}for (decltype(v.size()) i=0; i<v.size(); ++i) { v[i] = i; // 错误,v为空时v[i]未知,不能用下标添加vector元素}for (decltype(v.size()) i=0; i<v.size(); ++i) { v.push_back(i); // 正确,应该使用push_back}
3. 所有的容器类型以及string都支持迭代器,但只有少部分如vector容器以及string支持下标访问,所以尽量使用迭代器而非下标。
4. 迭代器的尾指针end()指向的是最后一个元素的后面一位,不能解引用以及移动位置。空容器的begin和end相等,都指向最后一个元素的后面一位。
5. 所有容器的迭代器都定义了!=和=,所以用!=判断迭代器位置而非<符号。
6. 迭代器有两种类型
vector<int>::iterator it; // 普通迭代器,可以修改元素vector<int>::const_iterator it; // 常量迭代器,只能读,不能写,常量容器只能用常量迭代器string::iterator it; // 同普通迭代器auto it = v.cbegin(); // it的类型为常量迭代器auto it = v.cend(); // it的类型为常量迭代器(*it).empty(); // it所指元素是否为空*it.empty(); // 错误,it是迭代器,不能判断emptyit->empty(); // 正确,->运算符是解引用和.的组合
7. 范围for和带有迭代器的循环体都不能改变容器的大小,只要容器大小改变了,范围for和迭代器都不起作用了。
8. 迭代器可以+n运算,两个迭代器之差的数据类型是vector<T> difference_type
阅读全文
0 0
- Primer (五)
- C++ Primer(五) 表达式
- c++Primer,五,表达式
- c++ primer(五)
- C++Primer读书笔记(五)
- C++Primer笔记(五)
- 《C++ Primer》经典语句(五)
- c++ primer读书笔记(五)
- C++ Primer 学习 (五)
- C++primer知识点(五)(终结C++primer)
- 《C++Primer Plus》学习笔记(五)
- C++ Primer 中文版 学习笔记(五)
- C++ Primer笔记(五)语句
- C++ Primer 笔记五 引用(const)1
- C++ Primer 笔记+习题解答(五)
- c++ primer 学习(五) 类
- C++ primer plus读书笔记(五)
- 《C++Primer》读书笔记(五)语句
- 大数据01-云平台、虚拟机+Linux安装及命令操作
- java用二维数组写的关灯小游戏
- O(N)的组合模版 HDU6114
- python pip numpy安装记录
- spring-cloud-zuul超时
- Primer (五)
- I2C驱动详解
- Spring源码开发环境搭建
- 开始记录我Web前端自学之路了,希望与大家分享交流
- Unity01
- form表单初始化FormData对象方式上传文件
- HandlerMapping和BeanNameUrlHandlerMapping的使用
- 交叉编译zeroMQ与pyzmq
- jdbc核心之PrepareStatement