Описание тега std-span
Облегченный объект-оболочка, не являющийся владельцем, ссылающийся на непрерывную последовательность элементов в памяти.
4
ответа
Что такое "промежуток" и когда я должен его использовать?
Недавно я получил предложения по использованию span<T>в моем коде, или видел некоторые ответы здесь на сайте, которые используют spanх - якобы какой-то контейнер. Но - я не могу найти ничего подобного в стандартной библиотеке C++. Так что же э…
16 авг '17 в 22:15
1
ответ
Сделать Eclipse CDT правильно игнорирует мой заголовок диапазона GSL
Я использую библиотеку поддержки рекомендаций gsl::span (из реализации Нейла Макинтоша) - с заголовком, расположенным по адресу /usr/local/src/gsl/include, Я также использую nVIDIA nSight 9.2, то есть Eclipse CDT версии 8.4.0.nvidia-что-то. Я добави…
13 окт '18 в 20:15
1
ответ
Является ли хорошей идеей основывать несобственный битовый контейнер на std:: vector<bool>? станд:: пролет?
В нескольких моих проектах мне все чаще приходилось работать с последовательными последовательностями битов в памяти - эффективно (*). До сих пор я написал набор встроенных автономных функций, настроенных на выбор типа "битовый контейнер" (например,…
13 июн '18 в 21:55
1
ответ
Как я должен представлять непрерывную последовательность принадлежащих мне элементов?
У меня есть куча типизированных данных в последовательной памяти, которые я получил как T *; и я также знаю количество элементов (как std::size_t хотя это не имеет большого значения). Я хотел бы использовать какой-то один тип или структуру данных дл…
25 окт '18 в 21:36
4
ответа
Какой идиоматический способ ссылаться на std::what или not_yet_in_std::what?
Мне нравятся пролеты, поэтому я использую gsl::span здесь и там. Но - в C++20 это будет std::span вместо *. я использую std::optional, но для кода C++14 это должно быть std::experimental::optional, И так далее. Какой идиоматичный и своего рода персп…
04 окт '18 в 18:51
1
ответ
Почему в std::span отсутствует size_type?
Я обновлял старый код, который использовал мой класс span для homebrew, до того, который больше соответствует C++20 std::span и я получаю ошибки компиляции, потому что std::span не имеет size_type и вместо этого имеет index_type, Там была огромная д…
17 мар '19 в 16:27
2
ответа
Как написать библиотеку C++ для работы с любой реализацией span<T>?
Я пишу библиотеку ввода / вывода, в которой пользователю необходимо предоставить блоки памяти для чтения или записи. Моя библиотека принимает span<T> кажется наиболее естественным, так как: Это не навязывает пользователю выбор контейнера. Они …
19 июн '19 в 01:57
1
ответ
Возврат условного `range_expression`
Какой самый эффективный способ итерации по одному из нескольких известных диапазонов на основе некоторого условия? псевдокод для двоичного условия: for element in (condition ? range_a : range_b) // do work Этот "пример" показывает мое намерение испо…
27 авг '19 в 11:22
1
ответ
Почему std::span это указатель + размер, а не два итератора
Похоже, что std::span в С ++20 определяется аналогично template<class T> class span { T* begin; size_t count; }; И нет template<class Iter> class span { Iter begin; Iter end; }; что является более общим (работает с std::list, std::map и …
28 июн '19 в 21:03
1
ответ
Почему массив span и конструкторы std::array отличаются от конструкторов контейнеров
Я играл с последней спецификацией для std::span используя clang trunk и libC++ на Godbolt, и некоторые конструкторы сбивают с толку. В частности, я нахожу конструкторы из простого старого массива и и std::array отличаться от других контейнеров. Напр…
10 авг '19 в 20:17
2
ответа
Span распространяет const?
Стандартные контейнеры распространяют const. То есть их элементы автоматически являются константными, если сами контейнеры являются константными. Например: const std::vector vec{3, 1, 4, 1, 5, 9, 2, 6}; ranges::fill(vec, 314); // impossible const st…
04 июл '19 в 13:56
1
ответ
Что случилось с std::cspan?
std::span был проголосован в C++20. Я предположил, что наряду с std::span, был бы псевдоним удобства, определенный как это: template <class T, size_t Extent = dynamic_extent> using cspan = span<const T, Extent>; Мне кажется, это очень уд…
02 июл '19 в 08:21
1
ответ
Почему в std::span отсутствуют операторы сравнения?
Не было std::span разработан как легкая ссылка на субрегионы std::vector/std::array/простой массив и тому подобное? Разве он не должен также содержать в своем API операторы сравнения, чтобы соответствовать им? Что послужило причиной исключения? Прим…
11 мар '20 в 13:16
1
ответ
Как преобразовать std::vector уникальных указателей в std::span необработанных указателей?
У меня в интерфейсе какого-то модуля есть такая функция: void DoSomething(Span<MyObject *const> objects); , где Span это моя упрощенная реализация C++20 std::span шаблон. Эта функция просто перебирает непрерывную последовательность указателей …
03 фев '20 в 19:28
1
ответ
Создайте диапазон <shared_ptr <T>> из массива <shared_ptr <void>>
У меня есть std::array<std::shared_ptr<void>, N>, и у меня есть методы для доступа к частям этого буфера как к разным типам, которые я хотел бы использовать std::span<std::shared_ptr<T>> за. Есть ли способ построить такой диа…
05 июл '20 в 14:35
2
ответа
Как вы проверяете границы с помощью std span?
std::vector и почти все другие контейнеры имеют очень удобный способ проверки границ: at(). std::span по-видимому, этого нет. Почему? Есть замена? Помимо развертывания собственного at()?
02 авг '20 в 15:06
1
ответ
Почему в std::span отсутствуют методы cbegin и cend?
Почему std::span иметь только begin а также end методы, а не их постоянные аналоги итератора cbegin а также cend? (стандарт) Я также заметил, что в предложениях для диапазона, которые я смог найти, действительно есть определение для cbegin а также c…
06 июл '20 в 17:00
2
ответа
Самый простой способ назначить std::span на std::vector
Я хотел сделать это #include <vector> #include <span> struct S { std::vector<int> v; void set(std::span<int> _v) { v = _v; } }; Но не компилируется. Какие есть альтернативы?
01 сен '20 в 13:46
1
ответ
Почему в libstdC++ нет span::span(контейнер &)?
Согласно cppreference, в C++20std::span предполагается, что его можно построить с использованием ссылок на контейнеры: template <class Container> constexpr span(Container& cont); template <class Container> constexpr span(const Contai…
18 янв '20 в 23:43
2
ответа
Как использовать span для завершения аргументов командной строки
Это использование грядущего C++20 std::span правильно и без накладных расходов на завершение аргументов командной строки? #include <iostream> #include <span> int main(int argc, const char* argv[]) { for (auto s : std::span { argv, static…
05 июн '20 в 18:24