C++基础4

1. c_str()

    c_str()std::string 类提供的成员函数之一。它返回一个指向以 null 结尾的字符数组(C 风格字符串)的指针,该字符数组包含了 std::string 对象中存储的字符串内容。使用 c_str() 函数的主要目的是在需要使用 C 风格字符串的情况下,将 std::string 对象转换为相应的字符数组,并返回指针。

2. 容器的迭代器 

2.1   后置++会构建临时对象。而前置++会直接返回this指针的引用。前置++效率高

2.2  iterator:

 统一的方式: 每个容器都有迭代器,通过迭代器可以遍历容器元素

透明: 不用知道类型,直接使用auto自动推导类型

 

3. 迭代器失效问题

1.迭代器为什么会失效?

        迭代器失效通常是指迭代器在某些操作后不能正确地访问或引用相应的元素。迭代器失效可能是由于对容器的修改操作导致的。以下是一些可能导致迭代器失效的情况:

  1. 插入或删除元素: 在容器中插入或删除元素,可能导致已有元素的移动或重新分配内存。如果在这种操作之后再使用之前的迭代器,它们可能会指向错误的位置或失效。

  2. 使用 end() 之后的迭代器: 对于某些容器,end() 返回的迭代器可能不是有效元素的位置,而是表示末尾的“超过末尾”的位置。如果使用这样的迭代器进行操作,可能会导致未定义的行为。

  3. 清空容器: 如果你清空了一个容器,所有的迭代器都将失效,因为没有元素可供迭代。

  4. 对容器进行重新分配: 当容器需要扩容时,它可能会分配新的内存并将元素从旧的内存复制到新的内存中。这会导致原来的迭代器失效。

  5. 使用已被销毁的对象: 如果你使用了已被销毁的对象(例如,容器中的元素是指针,而指针指向的对象已被删除),那么迭代器将指向无效的内存。

2. 迭代器失效解决方法

对于删除的元素:可以删除时返回新的迭代器

对于插入操作也是相同的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值