Я думаю, что в 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;
Sorter sorter;
sorter.paramSorter = 0;
// fill the vector
std::sort( foo.begin(), foo.end(), sorter );
}
Класс также имеет методы получения, которые используются в структуре сортировщика.
Какой самый эффективный способ вставить новый элемент в вектор?
У меня следующая ситуация:
У меня есть сетка (электронная таблица), использующая отсортированный вектор класса. В любой момент вектор можно отсортировать повторно, и сетка отобразит отсортированные данные соответствующим образом.
Теперь мне нужно будет вставить новый элемент в вектор/сетку.
Я могу вставить, затем пересортировать и повторно отобразить всю сетку, но это очень неэффективно, особенно для большой сетки.
Поможете?
Подробнее здесь: https://stackoverflow.com/questions/158 ... ted-vector
Мобильная версия