C++primer第4版第九章顺序容器

本文探讨了C++中容器元素类型的约束条件,包括元素必须支持赋值运算和可复制性,并介绍了引用类型和IO流类型为何不适合用作容器元素。此外,还详细解释了如何正确使用迭代器进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Talk is cheap, show me the code.

  1. 容器的元素类型必须满足两个约束条件:

    元素类型必须支持赋值运算。
    元素类型对象必须可以复制。

  2. 所有引用类型没有实现赋值运算就不能作为容器元素类型。IO流类型不支持复制和赋值,所以不能作为容器元素类型。

  3. 当定义容器的容器时,注意一定要使用空格,以区分移位运算符:

    vector<vector<string> > lines;

  4. C++标准库的顺序容器为vector,list,deque,他们的迭代器全都支持自增和自减运算和等于和不等运算,但是只有vector和deque的迭代器支持加法减法运算和大于小于运算,list迭代器不支持加法减法运算和大于小于运算:

    list<int> list1 = {1, 2, 3};
    list<int>::iterator it = list1.end();
    it--;
    for (;it != list1.begin();it--) //实现list的逆序输出,注意不能使用list1.end()-1运算和大于小于运算
    cout << *it << endl;
    cout << *it << endl;

  5. 不要存储容器的end()迭代器,否则很容易导致该迭代器失效,比如:

    vector<int> vect = {1, 2};
    vector<int>::iterator first = vect.begin(), end = vect.end();
    while (first != last) //wrong, last每次循环都会失效,导致出错
    {
    first = vect.insert(++first, 42);
    first += 2;
    }

  6. 创建一个list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值