自 C ++ 20 起,我们可以通过执行以下操作从向量中按值擦除元素:
std::vector<int> v = {10,20,30,40,50};
std::erase(v,30);
那真的很方便,更不用说还有std::erase_if
。
但是,如果只有对的second
值匹配,那么如果我们有一个向量对并且想要擦除该怎么办?
std::pair<int, std::string> foo = std::make_pair(1,"1");
std::pair<int, std::string> foo2 = std::make_pair(2,"2");
std::vector< std::pair<int, std::string> > v;
v.push_back(foo);
v.push_back(foo2);
std::erase(v, make_pair(1,"2")); //This is not going to work!
那么,有没有办法通过成对向量中的second
值来擦除元素?