gpt4 book ai didi

C++ STL vector iterator insert segmentation fault 收藏

转载 作者:行者123 更新时间:2023-11-28 03:22:40 24 4
gpt4 key购买 nike

          std::vector<struct::event>::iterator it;
std::vector<struct::event>::iterator last=myvector.end();

for (it=myvector.begin(); it<=last; it++){

if(mysignal.declination<(*last).declination){

if (mysignal.declination>=(*it).declination && mysignal.declination<(*(it+1)).declination){
myvector.insert(it+1, mysignal);
break;
}
}
if (mysignal.declination>=(*last).declination){
myvector.push_back(mysignal);
break;
}


}

我有一个名为 myvector 的 vector ,其中包含按赤纬排序的事件。现在我想在正确的位置将 mysignal 添加到此 vector 。但我总是在一些事件后遇到段错误,这些事件指的是:if(mysignal.declination<(*last).declination)。我只是看不出有什么问题。

最佳答案

你的循环是错误的,阅读the docs :

Returns an iterator to the element following the last element of the container. This element acts as a placeholder; attempting to access it results in undefined behavior.

你不能取消引用 end(),它提供了一种知道你已经溢出容器的方法,所以你的循环条件应该是 it != myvector.end()last 也是错误的。

关于C++ STL vector iterator insert segmentation fault 收藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013584/

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