9.1
a,list 大量的随机插入
b,deque 在头尾插入删除
c,vector 不需要插入删除并且还需要排序
9.2
list<deque<int>> list;
9.3
有两个元素,第一个为begin第二个为end
begin与end要指向同一个容器内的元素,一个在前一个在后,可以用前者递增一直到后者来实现遍历的目的
9.4
//用两个迭代器的标志位和一个i作为参数在迭代器中寻找i
bool find_i(vector<int>::const_iterator begin,vector<int>::const_iterator end,int i){
while(begin!=end){
//检查begin的值是否是i
if(*begin==i){
return true;
}
begin++;
}
//没有就返回false
return false;
}
9.5注意本函数这里返回的是一个迭代器,这个迭代器指向与i相同的元素
vector<int>::const_iterator findi(vector<int>::const_iterator begin,vector<int>::const_iterator end,int i){
while(begin!=end){
//检查begin的值是否是i
if(*begin==i){
return begin;
}
begin++;
}
//没有就返回false
return end;
}
9.6
迭代器只有等于不等
可以对迭代器进行递增操作
所以
while(item1 < item2)
要改成
while(item1 ! = item2)
9.7
vector<int>::int
或者
vector<int>::size_type
这取决于vector<int>的长度,若是使用的vector比较短,就可以使用前者,若是长就最好使用后者,因为后者是size_type,是属于unsigned类型,不限长度
9.8
1,list<string>::const_iterator类型
2,list<string>::iterator类型
`9.9
begin函数是使用非常量对象时候进行的操作,支持修改对象成员
cbegin是const_iterator类型,是常量成员操作时候使用的,当不支持修改对象成员的时候使用
9.10
v1是非常量对象vector<int>::iterator,读写操作都可以
v2,v3,v4是常量对象vector<int>::const_iterator,只支持写操作
因为v1是一个类型,v2v3v4是一个类型
auto默认识别一个类型,所以这里要这样写(我用的codeblocks)
int main()
{
vector<int> v1;
const vector<int> v2;
auto it1=v1.begin();
auto it2=v2.begin(), it3=v1.cbegin(),it4=v2.cbegin();
return 0;
}
网友评论