C++Primer学习笔记第九章(9/18)顺序容器-(下)
来源:互联网 发布:台湾九合一选举 知乎 编辑:程序博客网 时间:2024/05/21 12:14
容器定义的类型别名
1 size_type
2 iterator, const_iterator, reverse_iterator, const_reverse_iterator, difference_type, value_type
3 reference
4 const_reference
顺序容器的操作1—访问
c.begin() 返回类型 iterator
c.end() 返回类型 iterator
c.rbegin() 返回类型 iterator
c.rend() 返回类型 iterator
c.back() 返回类型 reference
c.front() 返回类型 reference
c[n] 返回类型 reference(仅仅适用于vector, dequeue)
c.at(n) 返回类型 reference(仅仅适用于vector, dequeue)
例程:区别c.begin()与c.front()的返回值差异
if (!ilist.empty())
{
// val and val2 refer to the same element
list<int>::reference val = *ilist.begin();
list<int>::reference val2 = ilist.front();
// last and last2 refer to the same element
list<int>::reference last = *--ilist.end();
list<int>::reference last2 = ilist.back();
}
顺序容器的操作2—增加元素
c.insert(p,t), c.insert(p,n,t), c.insert(p,b,e)
//注意其中的P代表迭代器,而迭代器可能指向超出容器末端的下一位置,所以insert()函数全是在其指向位置之前而非之后插入数据。
c.push_back(t),
c.push_front(t),
增加元素相关操作注意事项:
迭代器返回值可能是超出容器末端的下一位置,此时特别容易出现问题。
问题例程:
vector<int>::iterator first=v.begin(), last=v.end();
while(first!=last){
first=v.insert(first, 42);
++first;
}
修改思路:
做最坏的打算,假设每次对容器的增添操作都会使得迭代器失效。
修改例程:
while(first!=v.end()){
first=v.insert(first, 42);
++first;
}
顺序容器的操作3—删除元素
c.erase(p) 返回类型 iterator,指向删除元素后一位所指向的元素
c.erase(b,e) 返回类型 iterator,指向删除元素段后一位所指向的元素
c.clear() 返回类型 void
c.pop_back() 返回类型 void
c.pop_front() 返回类型 void
顺序容器的操作4—关于大小
c.size() 返回类型c::size_type
c.max_size() 返回类型c::size_type
c.empty() 返回类型 bool
c.resize(n) 返回类型 void
c.resize(n,t) 返回类型 void
顺序容器的操作5—赋值
c1 = c2
c1.swap(c2) 交换的速度大于赋值
c.assign(b,e)
c.assign(n,t)
vector容器的自增长
vector容器的元素以连续的方式存放,所以,访问效率非常高。
而每当vector容器需要分配新的存储空间时,都会加倍当前的容量来实现重现分配。
string相关
例程1
//找出”r2d2”这个字符串中出现的所有数字
string::size_type pos = 0;
while ((pos = name.find_first_of(numerics, pos))!= string::npos) {
cout << "found number at index: " << pos<< " element is " << name[pos] << endl;
++pos; }
- C++Primer学习笔记第九章(9/18)顺序容器-(下)
- C++Primer学习笔记第九章(9/18)顺序容器-(上)
- c++primer学习笔记 ( 第九章 顺序容器)
- C++primer第五版笔记-第九章顺序容器
- 顺序容器 - 1【C++ Primer 学习笔记 - 第九章】
- 顺序容器 - 2【C++ Primer 学习笔记 - 第九章】
- 顺序容器 - 3【C++ Primer 学习笔记 - 第九章】
- c++ Primer 学习笔记 第九章----顺序容器
- C++ Primer复习和学习笔记 第九章 顺序容器
- C++primer 第九章:顺序容器----字符串
- 【c++ primer 笔记】第九章 顺序容器
- 【C++primer学习笔记】第9章 顺序容器
- c++primer第九章顺序容器 小结--9
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:顺序容器的定义
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:顺序容器的操作
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:vector容器的自增长
- C++Primer学习笔记(9)顺序容器
- C++Primer第五版【笔记】——第九章——顺序容器
- java到底有没有引用传值
- Linux之父访谈录:设计内核只为了好玩
- 利用iText生成PDF报表
- 二维(两个图像相加得第三个图形)
- ARM立即数,LDR和MOV的区别
- C++Primer学习笔记第九章(9/18)顺序容器-(下)
- 八分钟的温暖
- 实现自己的ls
- 设备驱动外传 - 虚拟总线和platform device
- 老百姓的命在政府官员眼里算什么
- 一个做技术14年的人生职业规划................zzustcbbs
- vc 内嵌汇编 部分经验
- 转:Android开发指南-用户界面-事件处理
- DLNA