首页 > 解决方案 > 如何控制过滤器尺寸

问题描述

这是我第一次学习过滤器。我在学习C++过滤器时遇到了一个问题。我得到了一个关于过滤器的示例代码,但是这个过滤器的输出太大了,因为我希望过滤器的大小可以小于1KB。我想添加一个 for 循环,以便我可以只向过滤器添加适当大小的内容,但我在这个过程中遇到了一些问题。

这是我的过滤器代码:

int main(int argc, const char* argv[]) {
    if (argc > 1) {
        ifstream filter_file(argv[1]);
        set<string> filter_lines;
        string line;
        for (string line; getline(filter_file, line);)
        {
            bitset<256> control_size;
            for (size_t i = 0; i < control_size.size(); ++i)
            {
                filter_lines.insert(line);
            }
        }
        for (string line; getline(cin, line); ) {
            if (filter_lines.find(line) != filter_lines.end()) {
                cout << line << endl;
            }
        }
        if (!cin.eof()) {
            throw runtime_error("Error reading from std::cin.");
        }
    }
}

但我的 for 循环似乎无法成功限制它。我的理解是getline用来获取整个文件,然后for循环控制大小。我的理解有问题吗?我该如何修改它?

标签: c++filter

解决方案


推荐阅读