Создал map
std::map<std::string, std::vector<boost::variant<std::string, int, double>>> outputData;
и вектор
std::vector<double> ValDbl;
и когда пытаюсь записать
outputData.insert("123", ValDbl);
получаю ошибку С2664
C2664 "std::_Tree_iterator>> std::_Tree,std::allocator>>,_Pr,_Alloc,false>>::insert(std::_Tree_const_iterator>>,const std::pair,std::allocator>>> &)": невозможно преобразовать аргумент 1 из "const char [4]" в "const std::_Tree_const_iterator>>"
подскажите что я делаю неправильно? ведь variant<...> автоматически должен выбирать тип.
Мне кажется, вы неправильно понимаете концепцию boost::variant
.
В вашем случае std::vector<boost::variant<std::string, int, double>>
будет содержать не значения определенного типа, а значения типов, указанных в variant
Т.е. выглядеть это будет так:
#include <map>
#include <string>
#include <vector>
#include <iostream>
#include <boost/variant.hpp>
int main ()
{
typedef boost::variant <std::string, int, double> TVariant;
typedef std::vector<TVariant> TVariantVector;
typedef std::map<std::string, TVariantVector> TMySuperMap;
std::string key = "123";
TVariantVector ValDbl;
TMySuperMap outputData;
outputData.insert(TMySuperMap::value_type(key, ValDbl));
TVariantVector& vec = outputData[key];
vec.push_back(0.1);
vec.push_back(1);
vec.push_back("my_string");
for (auto& item: vec)
std::cout << item << std::endl;
return 0;
}
https://www.onlinegdb.com/BJsquLZ0Q
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Столкнулся с такой проблемойХочу поменять название окна программы с MainWindow на своё
Гарантировано ли стандартом, что этот код выведет в консоль (устройство вывода - консоль, а не какое-то другое) следующую строку?
Условие задачи таково, что сумма двух первых чисел может быть равна чуть меньше 2*(10^9), те