C++ 如何从vector中删除所需字符串<;字符串>;?
我需要通过函数C++ 如何从vector中删除所需字符串<;字符串>;?,c++,C++,我需要通过函数bool谓词(***,const string&event)从map Events中删除所需的字符串 我尝试用算法来实现这一点: for(auto& item : Events){ remove(item.second.begin(), item.second.end(), [predicate, item](string event){ return predicate(item.first, event); } } 但是它不起作用在代码中似乎有点混乱。下面的步骤应该可
bool谓词(***,const string&event)
从map Events
中删除所需的字符串
我尝试用算法来实现这一点:
for(auto& item : Events){
remove(item.second.begin(), item.second.end(), [predicate, item](string event){
return predicate(item.first, event);
}
}
但是它不起作用在代码中似乎有点混乱。下面的步骤应该可以做到这一点
std::map<***, std::vector<std::string>> Events;
bool predicate(***, const std::string& event) {
...
}
for (auto& item : Events) {
item.second.erase(std::remove_if(item.second.begin(), item.second.end(),
[item](const std::string& event) {
return predicate(item.first, event);
}), item.second.end());
}
std::映射事件;
布尔谓词(***,常量std::字符串和事件){
...
}
用于(自动项目:事件(&E){
item.second.erase(std::remove_if(item.second.begin(),item.second.end(),
[项目](常量标准::字符串和事件){
返回谓词(item.first,event);
}),item.second.end());
}
代码的主要问题是
remove\u,而不是remove
erase
<代码>删除\u如果(和删除
)本身不删除任何内容。它们所做的只是将要删除的字符串放在向量的末尾,并向要删除的第一个字符串返回一个迭代器。您必须调用vector::erase
来执行实际的删除操作更详细地描述“它不起作用”。它删除了其他东西吗?它没有移除任何东西吗?它是在第一个地方编译的吗?另外,创建一个。