美文网首页
c++primer 9.1-9.10

c++primer 9.1-9.10

作者: 青吟乐 | 来源:发表于2019-05-06 10:42 被阅读0次

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;
}

相关文章

网友评论

      本文标题:c++primer 9.1-9.10

      本文链接:https://www.haomeiwen.com/subject/sfxroqtx.html