C++ 从向量'中删除特定元素;s范围
如果元素的值与字符串“empty”匹配,我想删除该元素,所以迭代整个循环,但它不是这样工作的C++ 从向量'中删除特定元素;s范围,c++,vector,stl,stdvector,C++,Vector,Stl,Stdvector,如果元素的值与字符串“empty”匹配,我想删除该元素,所以迭代整个循环,但它不是这样工作的 #include <iostream> #include <string> #include <vector> using namespace std; int main () { std::vector<std::string> myvector; myvector.push_back("value"); myvector.push_ba
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main ()
{
std::vector<std::string> myvector;
myvector.push_back("value");
myvector.push_back("value");
myvector.push_back("empty");
myvector.push_back("value");
myvector.push_back("value");
myvector.push_back("empty");
myvector.push_back("empty");
int index = 0;
for(string input: myvector){
if(input == "empty")
myvector.erase(myvector.begin()+index,myvector.begin()+index);
index++;
}
for(string input: myvector){
cout << input << endl;
}
return 0;
}
正在寻找下面这样的东西,但不存在
myvector.erase(myvector.begin(),myvector.end(),"empty");
那么,如何以更少的复杂性实现它呢 您应该使用std::remove\u,如果是这样的话:
myvector.erase(std::remove_if(myvector.begin(), myvector.end(), [](const std::string& string){ return (string == "empty"); }), myvector.end());
如果如下所示,则应使用std::remove\u:
myvector.erase(std::remove_if(myvector.begin(), myvector.end(), [](const std::string& string){ return (string == "empty"); }), myvector.end());
std::vector myvector;
myvector.push_back(“值”);
myvector.push_back(“值”);
myvector.push_back(“空”);
myvector.push_back(“值”);
myvector.push_back(“值”);
myvector.push_back(“空”);
myvector.push_back(“空”);
auto it=std::remove_if(myvector.begin(),myvector.end(),
[](const std::string&s)
{
返回(s=“空”);
});
擦除(it,myvector.end());
remove\u if
将所有找到的“empty”
放在向量的末尾
迭代器
删除它们std::vector myvector;
myvector.push_back(“值”);
myvector.push_back(“值”);
myvector.push_back(“空”);
myvector.push_back(“值”);
myvector.push_back(“值”);
myvector.push_back(“空”);
myvector.push_back(“空”);
auto it=std::remove_if(myvector.begin(),myvector.end(),
[](const std::string&s)
{
返回(s=“空”);
});
擦除(it,myvector.end());
remove\u if
将所有找到的“empty”
放在向量的末尾
迭代器
删除它们查看查看无需在此处使用
std::remove_if
和lambda,为什么不使用std::remove
值“empty”
?无需在此处使用std::remove_if
和lambda,为什么不使用std::remove
值“empty”
?
std::vector<std::string> myvector;
myvector.push_back("value");
myvector.push_back("value");
myvector.push_back("empty");
myvector.push_back("value");
myvector.push_back("value");
myvector.push_back("empty");
myvector.push_back("empty");
auto it = std::remove_if(myvector.begin(), myvector.end(),
[](const std::string& s)
{
return (s== "empty");
});
myvector.erase(it, myvector.end());