【发布时间】:2012-11-23 08:28:40
【问题描述】:
我正在尝试过滤矢量,使其仅包含特定值。
例如确保向量仅包含值为“abc”的元素。
现在,我正在尝试通过remove_copy_if 实现这一目标。
在使用 std 的一种算法时,有什么方法可以将附加参数传递给谓词?
std::vector<std::string> first, second;
first.push_back("abc");
first.push_back("abc");
first.push_back("def");
first.push_back("abd");
first.push_back("cde");
first.push_back("def");
std::remove_copy_if(first.begin(), first.end(), second.begin(), is_invalid);
我希望将以下函数作为谓词传递,但这似乎更有可能最终只是比较 remove_copy_if 和下一个正在检查的当前值。
bool is_invalid(const std::string &str, const std::string &wanted)
{
return str.compare(wanted) != 0;
}
我有一种感觉,我可能正在接近这个错误,所以任何建议都将不胜感激!
谢谢
【问题讨论】:
-
只是想知道 - 你用只有相同元素的向量做什么?
-
我试图让我的示例尽可能简单,这样才有意义 :) 我所做的就是从符合特定模式(使用正则表达式)的向量中删除元素。