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

时间:2016-11-28 20:56:28

标签: c++

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

这是代码:

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;

2 个答案:

答案 0 :(得分:0)

  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扩展的情况下进行编译,因此在您的g ++命令中添加-std=c++11或更高版本。

答案 1 :(得分:0)

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