繁体   English   中英

将两个排序的向量合并到一个排序的向量中

[英]Merging two sorted vectors in one sorted vector

背景:General Goal将两个已排序的文件用空格隔开,然后将它们放到一个已排序的文件中。

当前目标,以查看我是否可以使用合并功能或类似功能来组合两个排序的向量。

我正在使用http://www.cplusplus.com/reference/algorithm/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用作简单的指针(也许您会因为使用这种方式使用普通数组而感到困惑)。 在这里合并使用stl迭代器,而不仅仅是指针。 要解决此问题,请使用:

merge(file1.begin(), file1.end(), file2.begin(), file2.end(), file_1n2.begin());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM