我的完整程序在这里。我有这样的结构
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 但没有运气。