插入载体的项目设置

问题描述 投票:3回答:1

我想插入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
c++ vector stl set
1个回答
15
投票

您可以使用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; }))
© www.soinside.com 2019 - 2024. All rights reserved.