Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpRnDg 124 of 696 menu
◀ ▶

Повисший диапазон в C++

Повисший диапазон возникает, когда представление ссылается на память, которая уже уничтожена. Временный вектор исчезает после точки с запятой, а взгляд на него остается.

Опасный вариант: представление живет дольше контейнера. Запишем его и не используем после уничтожения данных - только как пример ошибки:

auto risky = std::views::all(std::vector<int>{1, 2, 3}); // risky outlives the temporary vector

Безопасно сначала сохранить контейнер в переменную, затем построить std::views::all. Запишем так и выведем элементы:

std::vector<int> stable = {1, 2, 3}; auto safe = std::views::all(stable); for (int v : safe) { std::cout << v << "\n"; }

Сохраните вектор в именованной переменной, оберните его в std::views::all и выведите сумму элементов.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить