如何使用移除擦除习语去除向量中的空向量?

aag*_*ard 2 c++ idioms

我使用移除擦除习语(如从矢量中删除元素)移除矢量中的空矢量时遇到一些麻烦.我该如何申请:

vector<vector<Point> > contours; // want to remove contours.at(i).empty()
contours.erase(remove(contours.begin(), contours.end(), ??? ),contours.end());
Run Code Online (Sandbox Code Playgroud)

mos*_*ald 10

你有没有尝试过:

contours.erase(remove(contours.begin(), contours.end(), vector<Point>()), contours.end());
Run Code Online (Sandbox Code Playgroud)


Cat*_*lus 5

使用remove_if带谓词.

contours.erase(
    std::remove_if(
         contours.begin(), contours.end(),
         [](const vector<Point>& v) { return v.empty(); }
         // or a functor/plain function/Boost.Lambda expression
    ), contours.end()
);
Run Code Online (Sandbox Code Playgroud)