У меня есть необходимость сопоставить некоторые элементы с определенными идентификаторами, elementID с начальным узлом на графике. Мне нужно хранить только идентификаторы элементов, чтобы мы обычно могли работать с только наборами или векторами size_t. Как правило, существуют миллионы элементов, которые добавляются партиями, которые будут сопоставлены с одним идентификатором. Вот почему мы используем конкретные представления для типичных назначений и храним их в варианте. < /P>
Например < /p>
//std::set -> random set of elements
//Interval -> elements from a starting id up to a final id
//Single -> just a single element
using VariantSet = std::variant;
//This is the vector containing the mapping
std::vector< std::tuple > mapping;
< /code>
Мы начали использовать диапазоны std :: на нескольких частях, и общий результат был отличным, но я застрял с вариантом. Я хотел бы получить диапазон от функции, чтобы я мог повторить элементы, которые отображаются с данным идентификатором. < /P>
Например: < /p>
for (auto elementId: getMappedElements(mapping, interestingId){
do_something_with_the_element(elementId);
}
< /code>
Проблема, которую я обнаружил, заключается в том, что я должен использовать STD :: View, чтобы получить диапазон из базового объекта, хранящегося в варианте, но этот диапазон будет другим типом, в зависимости от того, какой реальный контейнер является итерацией. Например, единственным контейнером возвращал представления :: одинокие, в то время как интервал возвращал йоту. Конечно, это разжигает компилятор, поскольку посетители должны возвращать один и тот же тип для каждого возможного типа в варианте, и, конечно, функция обертывания не может вернуть несколько типов. Есть ли способ достичь этого «полиморфного» диапазона, чтобы я мог фактически вернуть диапазон, который позже может быть дополнительно составлен (очень вероятно, преобразование)
Любая помощь ценится.
Подробнее здесь: https://stackoverflow.com/questions/795 ... n-variants
Как получить диапазон для зацикливания по контейнерам в вариантах ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1743624537
Anonymous
У меня есть необходимость сопоставить некоторые элементы с определенными идентификаторами, elementID с начальным узлом на графике. Мне нужно хранить только идентификаторы элементов, чтобы мы обычно могли работать с только наборами или векторами size_t. Как правило, существуют миллионы элементов, которые добавляются партиями, которые будут сопоставлены с одним идентификатором. Вот почему мы используем конкретные представления для типичных назначений и храним их в варианте. < /P>
Например < /p>
//std::set -> random set of elements
//Interval -> elements from a starting id up to a final id
//Single -> just a single element
using VariantSet = std::variant;
//This is the vector containing the mapping
std::vector< std::tuple > mapping;
< /code>
Мы начали использовать диапазоны std :: на нескольких частях, и общий результат был отличным, но я застрял с вариантом. Я хотел бы получить диапазон от функции, чтобы я мог повторить элементы, которые отображаются с данным идентификатором. < /P>
Например: < /p>
for (auto elementId: getMappedElements(mapping, interestingId){
do_something_with_the_element(elementId);
}
< /code>
Проблема, которую я обнаружил, заключается в том, что я должен использовать STD :: View, чтобы получить диапазон из базового объекта, хранящегося в варианте, но этот диапазон будет другим типом, в зависимости от того, какой реальный контейнер является итерацией. Например, единственным контейнером возвращал представления :: одинокие, в то время как интервал возвращал йоту. Конечно, это разжигает компилятор, поскольку посетители должны возвращать один и тот же тип для каждого возможного типа в варианте, и, конечно, функция обертывания не может вернуть несколько типов. Есть ли способ достичь этого «полиморфного» диапазона, чтобы я мог фактически вернуть диапазон, который позже может быть дополнительно составлен (очень вероятно, преобразование)
Любая помощь ценится.
Подробнее здесь: [url]https://stackoverflow.com/questions/79551482/how-to-obtain-a-range-to-loop-over-containers-in-variants[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия