相关疑难解决方法(0)

迭代器失效规则

C++容器的迭代器失效规则是什么?

优选地以摘要列表格式.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ iterator c++-faq c++11 c++17

509
推荐指数
6
解决办法
11万
查看次数

在向列表添加项目时如何遍历列表

我有一个线段列表(std::vector<std::pair<int, int> >我想对其进行迭代和细分。该算法将以psuedocode表示:

for segment in vectorOfSegments:
    firstPoint = segment.first;
    secondPoint = segment.second;
    newMidPoint = (firstPoint + secondPoint) / 2.0
    vectorOfSegments.remove(segment);
    vectorOfSegments.push_back(std::make_pair(firstPoint, newMidPoint));
    vectorOfSegments.push_back(std::make_pair(newMidPoint, secondPoint));
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是如何push_back在不永久遍历此列表的情况下如何添加新元素(并删除旧元素)。

似乎最好的方法可能是首先创建此向量的副本,然后将该副本用作参考,clear()原始向量,然后push_back将新元素用作最近清空的向量。

有更好的方法吗?

c++ vector

5
推荐指数
1
解决办法
1668
查看次数

向量中的 Push_back() 表现得很奇怪

预期输出是: 1 2 3 4,如果我们取消注释提到的执行推回操作的行并运行代码,预期输出仍然是 1 2 3 4。但是猜猜它完全不同。运行一下你就知道了。为什么会发生这种情况?

#include <iostream>
#include<vector>
using namespace std;

int main()
{
    int k=2;
    vector<int> v;
    vector<int> :: iterator itr;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);  
    v.push_back(4); 
    v.push_back(5);
    v.push_back(6); 
    v.push_back(7); 
    
    
    auto a=v.begin();
    
    for(int i=0;i<4;i++){
        cout<<*a<<" ";
        //v.push_back(anynumber); ----------------------------------->This line
        a++;

    }
    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

c++ vector push-back

-1
推荐指数
1
解决办法
89
查看次数

标签 统计

c++ ×3

vector ×2

c++-faq ×1

c++11 ×1

c++17 ×1

iterator ×1

push-back ×1