我想插入vector
字符串的项目set
在C ++字符串。如果向量的项目包含'+'
,应加入一组,否则应加入另一组。我可以通过遍历一个矢量一个做到这一点。不过,我会受到“callback
”的“insert
”功能“set
”功能做到这一点?
struct compare {
bool operator() (const std::string& str) const{
if(str.find("+") != std::string::npos) {
return false;
return true;
}
};
std::vector strlist = {"apple","+apple","banana","orange","+graphes"};
std::set<std::string,compare> set1,set2;
set1.insert(strlist.begin(),strlist.end(),compare);
我想创建set1
与项目的列表,
apple,
banana,
orange
并与项目set2
,
+apple
+graphes
您可以使用std::partition_copy
如下:
std::partition_copy(strlist.begin(), strlist.end(),
std::inserter(set1, set1.end()),
std::inserter(set2, set2.end()),
[](const std::string& str) { return str.find("+") != std::string::npos; }))