c++从列表中移除元素,并将其分配给对象变量

c++ Remove element from list and assign it to an object variable

本文关键字:分配 变量 对象 列表 元素 c++      更新时间:2023-10-16

我有一个数据向量(对象)的列表,我需要遍历该列表,找到最大的向量,将其从列表中删除,并将其分配给一个新变量(这是数据向量)。我在执行过程中遇到了问题(它编译正常,但随后停止工作)。如何在不破坏元素的情况下获得该元素,以便以后进行操作?

这是代码:

int biggestIndex = 0, biggestValue = -1;
i = 0;
list< vector<Data> >::iterator it;
for (it = (myList).begin(); it!= (myList).end(); it++) {
if ((*it).size() > biggerSize) {
biggestIndex = i;
biggestValue = basePList.size();
}
i++;
}
it = (myList).begin();
advance(it,biggestIndex);
vector<Data> partition = (vector<Data>) *it;
auto biggest = thelist.begin();
for (auto itr = thelist.begin() ; itr != thelist.end(); itr++) {
if (itr->size() > biggest->size()) {
biggest = itr;
}
}
vector<int> thebiggest = *biggest;

当然,这需要在编译时至少启用C++11扩展,所以请将-std=c++11或更高版本添加到g++命令中。

auto longest = *max_element(begin(myList), 
end(myList), 
[](const vector<Data>& v1, const vector<Data>& v2)
{return v1.size() < v2.size();});