Как вставить значение в отсортированный вектор?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как вставить значение в отсортированный вектор?

Сообщение Anonymous »

Этот вопрос является продолжением этого.
Я думаю, что в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»