全部,
这个问题是这个问题的延续。我认为 STL 错过了这个功能,但它只是我的恕我直言。
现在,问题。
考虑以下代码:
class Foo
{
public:
Foo();
int paramA, paramB;
std::string name;
};
struct Sorter
{
bool operator()(const Foo &foo1, const Foo &foo2) const
{
switch( paramSorter )
{
case 1:
return foo1.paramA < foo2.paramA;
case 2:
return foo1.paramB < foo2.paramB;
default:
return foo1.name < foo2.name;
}
}
int paramSorter;
};
int main()
{
std::vector<Foo> foo;
Sorter sorter;
sorter.paramSorter = 0;
// fill the vector
std::sort( foo.begin(), foo.end(), sorter );
}
在任何给定的时刻,向量都可以重新排序。该类还具有在排序器结构中使用的 getter 方法。
在向量中插入新元素的最有效方法是什么?
我的情况是:
我有一个网格(电子表格),它使用一个类的排序向量。在任何给定时间,向量都可以重新排序,网格将相应地显示排序后的数据。
现在我需要在向量/网格中插入一个新元素。我可以插入,然后重新排序,然后重新显示整个网格,但这非常低效,尤其是对于大网格。
任何帮助,将不胜感激。