Допустимо ли изменить ключ элемента std::set через его итератор, не нарушив инварианты контейнера?
База Hintsage
STL и контейнеры
Контейнеры, итераторы, алгоритмы и их сложность.
Практика
Вопросы: STL и контейнеры
Разберите последствия вызова std::vector::reserve: почему после увеличения capacity контейнер не содержит новых элементов?
В чём роль полуоткрытого диапазона итераторов [first, last) при обработке пустого диапазона?
Нужна последовательность с быстрым доступом по индексу и частыми вставками в начало. Какой из std::vector и std::deque выбрать и почему?
Разработчик должен изменить ключ уже существующего элемента std::map без копирования значения и без нарушения порядка контейнера. Какой механизм STL следует применить?
Разработчик сдвигает элементы std::vector вправо. Определите проблему в коде и назовите подходящий алгоритм для этой операции:
#include <algorithm>
#include <vector>
int main() {
std::vector<int> v{1, 2, 3, 4, 5};
std::copy(v.begin(), v.end() - 1, v.begin() + 1);
v[0] = 0;
}
Какое свойство диапазона гарантирует std::nth_element после завершения работы?
Разработчик хочет дописать вектор его текущим содержимым. Определите, корректен ли такой код, и назовите безопасный способ реализации операции:
#include <vector>
int main() {
std::vector<int> v{1, 2, 3};
v.insert(v.end(), v.begin(), v.end());
}
Что на самом деле гарантирует std::vector::shrink_to_fit при попытке освободить неиспользуемую память?
Требуется разделить элементы вектора на удовлетворяющие предикату и остальные, сохранив относительный порядок внутри обеих групп. Подходит ли вызов ниже и какой алгоритм обеспечивает нужную гарантию?
#include <algorithm>
#include <vector>
int main() {
std::vector<int> v{4, 1, 2, 3, 6, 5};
std::partition(v.begin(), v.end(), [](int x) {
return x % 2 == 0;
});
}
В std::map нужно найти элемент по ключу: почему std::find по диапазону принципиально хуже map::find?
На ревью утверждают, что замена push_back на emplace_back всегда устраняет копирование элемента. Верно ли это?
В сценарии с std::map дорогое значение нужно создавать только при отсутствии ключа. Какой механизм STL выбрать, чтобы не конструировать mapped-значение при уже существующем ключе?
Откуда берётся преимущество std::vector над std::list при последовательном обходе, если сложность обхода у обоих O(n)?
На собеседовании нужно просуммировать диапазон чисел типа long long через std::accumulate. Как начальное значение влияет на тип и корректность результата?
Вам нужен односвязный контейнер: почему у std::forward_list нет метода size()?
Практическая ситуация: поиск в std::map<std::string, ...> выполняется по std::string_view — за счёт какого механизма можно избежать создания временного std::string?
Почему std::deque нельзя передать API, требующему непрерывный диапазон, хотя у него есть быстрый доступ по индексу?
Зачем перед массовой вставкой в std::unordered_map вызывать reserve, если число элементов заранее известно?
Допустим, сумма элементов типа double через std::reduce иногда отличается от суммы через std::accumulate. Какой механизм STL допускает такое расхождение?
Показано 21–40 из 50