Кусок вектора через std::span в C++
Буфер std::vector тоже непрерывен, поэтому
из него строят std::span тем же
конструктором, что и из массива C.
Ссылку на внутреннее хранилище вектора держит Span:
пока вектор не меняют так, что память переезжает,
представление остается действительным. Запишем
вектор из трех целых и выведем второй элемент:
#include <span>
#include <vector>
std::vector<int> ids{10, 20, 30};
std::span<int> part{ids};
std::cout << part[1] << "\n";
Изменение элемента через span видно в векторе и
наоборот. Запишем вектор строк, поменяем первую
строку через span и выведем ее:
#include <span>
#include <string>
#include <vector>
std::vector<std::string> names{"Ann", "Bob"};
std::span<std::string> view{names};
view[0] = "Amy";
std::cout << names[0] << "\n";
Создайте std::vector<int> с числами
2, 4, 6, постройте
std::span<int> и выведите сумму
первого и третьего.