ALL,
Этот вопрос является продолжением этого. Я думаю, что STL пропускает эту функциональность, но это просто мое ИМХО.
Теперь на вопрос.
Рассмотрим следующий код:
class Foo
{
public:
Foo();
...........
private:
int paramA, paramB;
std::string name;
};
int main()
{
std::vector<Foo> foo;
Sorter sorter;
sorter.paramSorter = 0;
std::sort( foo.begin(), foo.end(), sorter );
}
struct Sorter
{
bool operator()(const Foo &foo1, const Foo &foo2)
{
switch( paramSorter )
{
case 0:
return foo1.name < foo2.name;
case 1:
return foo1.paramA < foo2.paramB;
case 2:
return foo1. paramA > foo2.paramB;
}
}
private:
int paramSorter;
}
В любой момент времени вектор может быть пересортирован. Класс также имеет методы геттера, которые используются в структуре сортировщика.
Каким будет наиболее эффективный способ вставки нового элемента в вектор?
Ситуация у меня есть:
У меня есть сетка (электронная таблица), которая использует отсортированный вектор класса. В любой момент времени вектор может быть повторно отсортирован, и сетка отобразит отсортированные данные соответствующим образом.
Теперь мне нужно будет вставить новый элемент в вектор/сетку. Я могу вставить, а затем повторно отсортировать, а затем повторно отобразить всю сетку, но это очень неэффективно, особенно для большой сетки.
Любая помощь будет оценена.