背景:总体目标将两个字符串以空格分隔的已排序文件合并为一个已排序文件。
当前目标,看看我是否可以使用合并函数或类似函数来组合两个排序的 vector 。
我正在使用 http://www.cplusplus.com/reference/algorithm/merge/ , 指导我使用合并功能。但是,我收到错误消息“没有匹配的函数调用‘merge’”。
我不确定合并函数是否真的会执行我想要的字符串操作,但我尝试使用它来查看它是否会执行。
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm> // std::merge, std::sort
#include <string>
using namespace std;
ifstream r_data_file(const string oname)
{
ifstream ist {oname};
if (!ist) {
string error = "cannot open " + oname;
throw runtime_error(error);
}
return ist;
}
void get_words(ifstream& ist, vector<string>& Po)
{
for (string p; ist >> p;) {
Po.push_back(p);
}
}
int main ()
{
vector<string> file1;
vector<string> file2;
ifstream ist = r_data_file("wordlist_1.txt");
get_words(ist, file1);
ifstream ist_2 = r_data_file("wordlist_2.txt");
get_words(ist_2, file2);
vector<string> file_1n2(file1.size()+file2.size());
merge(file1, file1.end(), file2, file2.end(), file_1n2);
}
我会很感激你的想法,干杯!
最佳答案
您不能简单地将 file1、file2 和 file_1n2 用作简单的指针(也许您的困惑是因为您以这种方式使用普通数组)。这里 merge 使用的是 STL 迭代器,而不仅仅是一个指针。要解决此问题,请使用:
merge(file1.begin(), file1.end(), file2.begin(), file2.end(), file_1n2.begin());
关于c++ - 将两个排序 vector 合并为一个排序 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35715886/