Можно ли добавить элементы в массив во время итерации? - PullRequest
3 голосов
/ 22 мая 2019

Я хочу отсортировать элементы.

Например: Изначально я получил 5 элементы и отсортировал их.Вопрос в том, что следующие 5 элементы должны быть добавлены к предыдущим 5 элементам, а затем он должен выполнить сортировку.

Должна ли какая-либо встроенная функция выполнять в векторе это?

Ответы [ 2 ]

5 голосов
/ 22 мая 2019

Есть ли какая-либо встроенная функция для выполнения этого с использованием вектора в c ++?

std::vector - это контейнер последовательности, который не выполняет никакой автоматической сортировки , если вы не сортируетеиспользуя std::sort.

Возможно, вы ищете std::set, если элементы уникальны, или std::multiset если элементы не являются уникальными для этого поведения.Сортировка выполняется по функциям сравнения согласно стандартным требованиям.

3 голосов
/ 22 мая 2019

Если вы вставляете элементы в отсортированный в настоящее время вектор в первой позиции после всех элементов, у которых он больше, то вектор остается отсортированным.

Вы можете найти позицию с помощью std::lower_bound

std::vector<int> currently_sorted{ 1, 2, 5, 6, 7 };
for (auto i : { 3, 4, 10, 9, 8 })
{
     auto it = std::lower_bound(currently_sorted.begin(), currently_sorted.end(), i);
     currently_sorted.insert(it, i);
}

assert(std::is_sorted(currently_sorted.begin(), currently_sorted.end()));
...