第九章
顺序容器
| 容器类型 | 介绍 |
|---|---|
vector |
可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢。 |
deque |
双端队列。支持快速随机访问。在头尾位置插入/删除速度很快。 |
list |
双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快。 |
forward_list |
单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作速度都很快。 |
array |
固定大小数组。支持快速随机访问。不能添加或者删除元素。 |
string |
与vector相似的容器,但专门用于保存字符。随机访问块。在尾部插入/删除速度快 |
习题
9.4编写函数,接受一对指向vector<int>的迭代器和一个int值。在两个迭代器指定的范围中查找给定的值,返回一个布尔值来指出是否找到。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool FindANumber(int i, vector<int>::iterator v1, vector<int>::iterator v2)
{
vector<int>::iterator iter = v1;
for(;iter != v2; ++iter)
{
if(*iter == i)
{
cout << "find number:" << i << endl;
return true;
}
}
cout << "not find number" << endl;
return false;
}
int main()
{
vector<int> vi;
for(int i = 0; i < 10 ; ++i)
{
vi.push_back(i);
}
/* for(auto a : vi)
cout << a << endl;
*/
FindANumber(5, vi.begin(), vi.end());
return 0;
}
9.5重写上一题的函数,返回一个迭代器指向找到的元素。注意,程序必须处理未找到给定值的情况。
vector<int>::iterator FindANumber(int i, vector<int>::iterator v1, vector<int>::iterator v2) { vector<int>::iterator iter = v1; for(;iter != v2; ++iter) { if(*iter == i) { cout << "find number:" << i << endl; return iter; } } cout << "not find number" << endl; return v2; }
9.9
vector<int> v1; const vector<int> v2; auto it1 = v1.begin(), it2 = v2.begin(); auto it3 = v1.cbegin(), it4 = v2.cbegin();
it1 是 vector<int>::iterator
it2,it3 和 it4 是 vector<int>::const_iterator
9.14编写程序,将一个list中的char *指针元素赋值给一个vector中的string。
list<const char*> l = {"hi", "c++"}; vector<string> vc; vc.assign(l.begin(), l.end());

浙公网安备 33010602011771号