C++ 在结构上使用并行排序算法
如何使用此结构:C++ 在结构上使用并行排序算法,c++,sorting,C++,Sorting,如何使用此结构: struct d { char name[5]; }; struct less_than_key { inline bool operator() (const d& struct1, const d& struct2) const { return strcmp(struct1.name, struct2.name) == -1; } }; vector<d> my_d; my_d.resize(
struct d
{
char name[5];
};
struct less_than_key
{
inline bool operator() (const d& struct1, const d& struct2) const
{
return strcmp(struct1.name, struct2.name) == -1;
}
};
vector<d> my_d;
my_d.resize(3);
strcpy(my_d[0].name, "mike");
strcpy(my_d[1].name, "joe");
strcpy(my_d[2].name, "anna");
parallel_sort(my_d.begin(), my_d.end(), less_than_key());
好了!,我希望这对其他人有帮助
我想是时候攻读排序算法博士学位了 当您可以轻松使用std::string时,不要使用C样式的字符串 因为您的结构只包含一个字符串,所以您可能只需要使用std::string,它实现了并行排序工作所需的运算符
错误显而易见。去检查向量的接口,如果你还没有线索,请考虑在我的第一个评论中的建议。我仍然要告诉你使用STD::String而不是char数组。它使这样的代码初始化更加安全和优雅;平行_sortz,it+项目@PurkadotCasaver:我明白你的观点,我会认真考虑的。上面的代码有任何进步,但仍然不起作用…谢谢你的建议,但是你能帮我用字符来做吗?我试过了,几乎把我的代码做了。correct@SkyRipper,你为什么要加糖?因为性能原因,我知道它很少,但这些都很重要,我有很多数据,都是基于你很难弄清楚这两种解决方案是如何工作的。我觉得你没有分析两种解决方案,看哪一种更快,只是假设(很可能是错误的)裸字符数组更快。
std::vector<std::string> vec(3);
vec.emplace_back("mike");
vec.emplace_back("joe");
vec.emplace_back("anna");
parallel_sort(std::begin(vec), std::end(vec));