插入要设置的矢量项

Inserting items of vector to set

本文关键字:设置 插入      更新时间:2023-10-16

我想在 c++ 中将vector字符串的项目插入到set字符串中。如果向量的项包含'+',则应将其添加到一个集合中,否则应将其添加到另一个集合中。我可以通过一个接一个地迭代向量来做到这一点。但是我可以通过"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; }))