【发布时间】:2013-08-12 06:37:42
【问题描述】:
我想对大量像素进行排序。
typedef char HexGetal;
typedef unsigned int NatuurlijkGetal;
struct Pixel{
HexGetal Blue;
HexGetal Green;
HexGetal Red;
};
struct Palet{
Pixel Kleur;
NatuurlijkGetal Aantal;
};
vector <Palet> MyContainer;
NatuurlijkGetal Seeds[10]={1, 25, 55, 7, 3, 149, 6, 7, 1, 55};
Palet LoopPalet;
LoopPalet.Kleur.Blue = 0;
LoopPalet.Kleur.Green = 0;
LoopPalet.Kleur.Red = 0;
for(NatuurlijkGetal Looper = 0; Looper < 10;Looper++)
{
LoopPalet.Aantal = Seeds[Looper];
MyContainer.push_back(LoopPalet);
}
在创建类型“Palet”之后,我创建了一个名为“MyContainer”的 Palet 向量,并对其进行初始化。
现在我想根据“Aantal”字段对其进行排序。 我怎么做?我可能正在寻找两种不同的方法。
第 1 部分: 我想学习当向量很小时执行此操作的一般方法。我从未对向量进行排序。阅读了很多关于它的内容并观看了视频,但我就是不明白。
第 2 部分: 以后使用时,此向量将具有超过 100 万个元素。所以也许需要一种更聪明的方法来限制复制操作的数量。
提前致谢。
【问题讨论】:
-
尝试使用自定义比较器
std::sort。如果测量速度太慢,请查看其他内容。 -
我在发布之前尝试了 std::sort ,但无法让它工作,因为我不知道在这种情况下自定义比较器会是什么样子。正如我所说,以前从未做过这样的事情。