gpt4 book ai didi

c++ - Set-Intersection C++ 使用文本文件

转载 作者:行者123 更新时间:2023-11-28 02:30:43 28 4
gpt4 key购买 nike

我目前正在编写代码以将两个文本文件集相交。我是 C++ 的新手,所以编码不好。请告诉我我在此代码中遗漏或输入错误的内容。谢谢你帮助我。

set<string> file1;
set<string> file2;
set<string> ofile;

string data1[] = { "X.txt"};
string data2[]={"Y.txt"};

file1.insert(data1,data1);
file2.insert(data2, data2);

cout<< "file1 is" << file1<<endl;

set_intersection(file1.begin(),file1.end(),file2.begin(),file2.end(),
inserter(file1, file1.begin()));

cout<<"file1 * file2 is" << ofile<< endl;

最佳答案

假设您想从文件 x.txty.txt 中获取整数数据,您可以这样做:

typedef int T;

std::ifstream in1("x.txt");
std::ifstream in2("y.txt");

std::set<T> set1{ std::istream_iterator<T>(in1),
std::istream_iterator<T>() };

std::set<T> set2{ std::istream_iterator<T>(in2),
std::istream_iterator<T>() };

std::set_intersection(set1.begin(), set1.end(),
set2.begin(), set2.end(),
std::ostream_iterator<T>(std::cout, "\n"));

如果文件的内容不是整数,您可以更改 T 的类型以适应(例如,如果您有一组单词,您可能想使用 std::string 而不是 int)。

就目前而言,这只是将结果写入标准输出。您可能想更改它以将输出放在其他集合中。

目前这也将初始输入数据放入 std::set 中。尽管名为 set_intersection,但数据实际上并不需要位于 std::set 中。它实际上只需要按排序顺序存储。例如,您可以将数据放入 std::vector 中,然后对它们进行排序并(如有必要)使用 std::unique 确保每个 vector 中的元素唯一.我提出这个主要是因为它通常运行得更快并且使用(显着)更少的内存。

关于c++ - Set-Intersection C++ 使用文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29085213/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com