Допустим, сумма элементов типа double через std::reduce иногда отличается от суммы через std::accumulate. Какой механизм STL допускает такое расхождение?
База Hintsage
Программирование C++
Язык C++ и его модель выполнения.
Темы раздела
Выберите подраздел
- 0 вопросов
Общие вопросы
Смешанные вопросы по C++.
Открыть раздел - 50 вопросов
C++ Core
Синтаксис, типы, функции, классы и базовая семантика C++.
Открыть раздел - 50 вопросов
Управление памятью
RAII, время жизни объектов, указатели и владение ресурсами.
Открыть раздел - 50 вопросов
STL и контейнеры
Контейнеры, итераторы, алгоритмы и их сложность.
Открыть раздел - 50 вопросов
Шаблоны
Templates, специализация, вывод типов и метапрограммирование.
Открыть раздел - 50 вопросов
Многопоточность
Потоки, синхронизация, атомики и модель памяти C++.
Открыть раздел - 50 вопросов
Современный C++
Возможности стандартов C++11 и новее и идиоматичный код.
Открыть раздел
Практика
Вопросы: Программирование C++
Зачем перед массовой вставкой в std::unordered_map вызывать reserve, если число элементов заранее известно?
Почему std::deque нельзя передать API, требующему непрерывный диапазон, хотя у него есть быстрый доступ по индексу?
Практическая ситуация: поиск в std::map<std::string, ...> выполняется по std::string_view — за счёт какого механизма можно избежать создания временного std::string?
Вам нужен односвязный контейнер: почему у std::forward_list нет метода size()?
На собеседовании нужно просуммировать диапазон чисел типа long long через std::accumulate. Как начальное значение влияет на тип и корректность результата?
Откуда берётся преимущество std::vector над std::list при последовательном обходе, если сложность обхода у обоих O(n)?
В сценарии с std::map дорогое значение нужно создавать только при отсутствии ключа. Какой механизм STL выбрать, чтобы не конструировать mapped-значение при уже существующем ключе?
На ревью утверждают, что замена push_back на emplace_back всегда устраняет копирование элемента. Верно ли это?
В std::map нужно найти элемент по ключу: почему std::find по диапазону принципиально хуже map::find?
Требуется разделить элементы вектора на удовлетворяющие предикату и остальные, сохранив относительный порядок внутри обеих групп. Подходит ли вызов ниже и какой алгоритм обеспечивает нужную гарантию?
#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::vector::shrink_to_fit при попытке освободить неиспользуемую память?
Разработчик хочет дописать вектор его текущим содержимым. Определите, корректен ли такой код, и назовите безопасный способ реализации операции:
#include <vector>
int main() {
std::vector<int> v{1, 2, 3};
v.insert(v.end(), v.begin(), v.end());
}
Какое свойство диапазона гарантирует std::nth_element после завершения работы?
Разработчик сдвигает элементы 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::map без копирования значения и без нарушения порядка контейнера. Какой механизм STL следует применить?
Нужна последовательность с быстрым доступом по индексу и частыми вставками в начало. Какой из std::vector и std::deque выбрать и почему?
В чём роль полуоткрытого диапазона итераторов [first, last) при обработке пустого диапазона?
Разберите последствия вызова std::vector::reserve: почему после увеличения capacity контейнер не содержит новых элементов?
Допустимо ли изменить ключ элемента std::set через его итератор, не нарушив инварианты контейнера?
Показано 161–180 из 300