其他分享
首页 > 其他分享> > c – 过滤std :: string的std :: vector

c – 过滤std :: string的std :: vector

作者:互联网

如何生成输出向量,根据输入向量是否以某个子字符串开头来过滤输入向量.我正在使用c 98和boost.

这是我得到的:

std::string stringToFilterBy("2");
std::vector<std::string> input = boost::assign::list_of("1")("2")("22")("33")("222");
std::vector<int> output;
boost::copy( input | boost::adaptors::filtered(boost::starts_with), std::back_inserter(output) );

解决方法:

您可以使用std::remove_copy_if代替:

#include <algorithm>
#include <iterator>
#include <vector>

struct filter : public std::unary_function<std::string, bool> {
    filter(const std::string &by) : by_(by) {}
    bool operator()(const std::string &s) const {
        return s.find(by_) == 0;
    }

    std::string by_;
};

std::vector<std::string> in, out;
std::remove_copy_if(in.begin(), in.end(), std::back_inserter(out),
                    std::not1(filter("2")));

标签:c98,c,boost
来源: https://codeday.me/bug/20190725/1536635.html