c ++ sort struct有3个元素的分段错误

时间:2013-11-08 08:36:33

标签: c++ sorting struct segmentation-fault stdvector

我的完整计划是here。 我有这样的结构

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内容从boost :: filesystem :: path更改为std :: string,但没有运气。

0 个答案:

没有答案