我的完整计划是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,但没有运气。