gpt4 book ai didi

c++ - 从 std::vector 删除元素时出现运行时错误

转载 作者:行者123 更新时间:2023-11-30 00:36:04 24 4
gpt4 key购买 nike

我有一个 vector index,其中包含我要删除的元素的索引来自 vector words

vector<int> Index;
vector<int> words;

我试过使用这个方法,但是我的程序在运行时崩溃了,为什么?发生了什么事?

for(int t1 = 0; t1 < index.size(); t1++)
{
words.erase(words.begin()+ index[t1])
}

谢谢。

最佳答案

如果不了解您是如何声明和初始化 wordsindex,就很难确切地说出您的程序崩溃的原因。

然而,最有可能发生的情况是,在从words中移除一个元素之后,并且在所有后续元素都向左移动一个位置之后,index中的索引 可以索引超出 vector 新末端的位置。

i 大于 vector 的大小时,评估 words.begin() + i 将导致未定义的行为(在您的情况下表现为崩溃)。

如果您的索引 vector 按递增顺序排序,只需恢复循环:

for(int t1 = index.size() - 1; t1 >= 0; --t1)
{
words.erase(words.begin() + index[t1]);
}

或者,您可以使用原始循环并按递减顺序对索引进行排序。

关于c++ - 从 std::vector 删除元素时出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17106325/

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