gpt4 book ai didi

c++ - 如何在 C++ 中递减迭代器?

转载 作者:行者123 更新时间:2023-11-28 06:17:15 25 4
gpt4 key购买 nike

我正在使用自定义结构的 c++ STL 列表,我有一个遍历该列表的迭代器,但有一次我需要递减并返回列表中的一些条目。我试过了——但这只是给了我一个段错误。还有其他方法吗?

我也试过这个 std::advance(cur_instruc, a);

这是迭代器的样子:

#include <iostream>
#include <string>
#include <list>

using namespace std;

typedef struct {
int instruction_ptr;
int token;
std::string instruction;
std::string value;
} decoraded_nodes;

int main () {
std::list<decoraded_nodes> instruction_list;
std::list<decoraded_nodes>::iterator it;
it = instruction_list.begin();

decoraded_nodes a;
a.instruction_ptr = 1;
a.token = 1;
a.instruction = "1";
a.value = "2";

decoraded_nodes b;
b.instruction_ptr = 1;
b.token = 1;
b.instruction = "1";
b.value = "1";

decoraded_nodes c;
c.instruction_ptr = 1;
c.token = 1;
c.instruction = "1";
c.value = "3";

instruction_list.insert(it, a);
instruction_list.insert(it, b);
instruction_list.insert(it, c);

bool aa = false;
int bb = 0;

for (std::list<decoraded_nodes>::iterator cur_instruc = instruction_list.begin(),
end = instruction_list.end();
cur_instruc != end; ++cur_instruc) {
cout << cur_instruc->value;

bb++;

if (bb == 1) {
aa = true;
}

if (aa) {
cur_instruc--;
aa = false;
}

}

return 0;
}

最佳答案

在循环内更改循环“for”变量(在本例中为迭代器)是个坏主意。当您需要返回并使用这个新创建的迭代器时,请尝试在循环内创建新的迭代器。

关于c++ - 如何在 C++ 中递减迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30023494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com