C++ c++;从列表中删除元素并将其指定给对象变量

C++ c++;从列表中删除元素并将其指定给对象变量,c++,C++,我有一个数据向量列表(object),我需要遍历该列表,找到最大的向量,将其从列表中删除,并将其分配给一个新变量(数据向量)。我在执行过程中遇到问题(它编译正常,但随后停止工作)。如何在不破坏元素的情况下获取元素,以便以后进行操作 代码如下: int biggestIndex = 0, biggestValue = -1; i = 0; list< vector<Data> >::iterator it; for (it = (myList).begin(); it!=

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

代码如下:

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;
intbiggestindex=0,biggestValue=-1;
i=0;
列表<向量>::对其进行迭代器;
for(it=(myList.begin();it!=(myList.end();it++){
if((*it.size()>biggerSize){
最大指数=i;
biggestValue=basePList.size();
}
i++;
}
it=(myList.begin();
先进性(it,最大指数);
向量分区=(向量)*它;
自动最大化=list.begin();
对于(自动itr=thelist.begin();itr!=thelist.end();itr++){
如果(itr->size()>最大->size()){
最大=itr;
}
}
向量最大=*最大;
当然,这需要在编译时至少启用C++11扩展,因此将
-std=C++11
或更高版本添加到您的g++命令中。

自动最长=*max\u元素(开始(myList),
auto longest = *max_element(begin(myList), 
                            end(myList), 
                            [](const vector<Data>& v1, const vector<Data>& v2)
                              {return v1.size() < v2.size();});
结束(myList), [](常数向量和v1,常数向量和v2) {返回v1.size()
您能提供一个有效的解决方案吗?您的代码实际上没有意义(尤其是
vector分区=(vector)*it;
部分)。您发布的内容肯定无法编译。
auto longest = *max_element(begin(myList), 
                            end(myList), 
                            [](const vector<Data>& v1, const vector<Data>& v2)
                              {return v1.size() < v2.size();});