0

我的完整程序在这里。我有这样的结构

struct video_cluster {
    boost::filesystem::path vid_path;
    boost::filesystem::path img_path;
    int cluster_num;
};

和排序方法

struct by_cluster_num{
    bool operator()(const video_cluster &a,const video_cluster &b) { 
        return a.cluster_num < b.cluster_num;
    }
};

首先我创建一个向量来推送结果

std::vector<video_cluster> result_new;

然后我将结果添加到结果向量中

video_cluster tmp;
tmp.vid_path = vids[j];
tmp.img_path =to;
tmp.cluster_num = clusters[j];
result_new.push_back(tmp);

然后对结果向量进行排序

 std::sort(result_new.begin(), result_new.end(), by_cluster_num());

它导致了分段错误。即使我试图通过

std::cout << result_new.back().img_path<<" "<<result_new.back().vid_path<<" "<<result_new.back().cluster_num<<"\n";

同样的事情分段错误..

但是如果我尝试将我的结构更改为

struct video_cluster {
    boost::filesystem::path img_path;
    int cluster_num;
};

只有 2 个元素,一切都很好。输出结果正常,没有出错。我只是不明白。我哪里做错了?? 我还尝试将内部结构从 boost::filesystem::path 更改为 std::string 但没有运气。

4

0 回答 0