C++基础4

发布时间:2024年01月20日

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. 迭代器失效解决方法

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

对于插入操作也是相同的

文章来源:https://blog.csdn.net/leimeili/article/details/135697167
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。