Использование вектора неподписанных символов на карте
Мне нужна помощь в использовании unsigned char
в std::vector
с, которые находятся внутри std::map
,
Вот как я заявляю std::map
:
std::map<int, std::vector<unsigned char>> DataMap;
Проблема возникает, когда я пытаюсь назначить std::vector
к std::map
,
it->first
исходит от другого std::map
, так как этот код находится внутри цикла.
std::vector<unsigned char> charHolder;
for(int i = 0; i < 10; i++)
{
charHolder.push_back('2');
}
DataMap.insert(std::pair<int, std::vector<unsigned char>(it->first, charHolder));
Ошибки:
Аргумент шаблона 2 недействителен
Мне нужно назначить char[]
массив к 2
место в std::map
, Я пробовал массив, но мне не повезло.
2 ответа
Решение
Вам не хватает >
персонаж
DataMap.insert (std::pair<int, std::vector<unsigned char>>(it->first, charHolder));
^
Вы можете использовать единый инициализатор следующим образом:
DataMap.insert ({it->first, charHolder});
Некоторые из множества забавных и разнообразных способов получить данные на карту:
std::map<int, std::vector<unsigned char>> DataMap;
void add(int i, std::vector<unsigned char> v)
{
// efficient move versions
DataMap.emplace(i, std::move(v));
DataMap[i] = std::move(v);
DataMap.insert(std::make_pair(i, std::move(v)));
DataMap.emplace(std::piecewise_construct,
std::make_tuple(i),
std::forward_as_tuple(std::move(v)));
// less efficient copy versions
DataMap.emplace(i, v);
DataMap[i] = v;
DataMap.insert(std::make_pair(i, v));
DataMap.emplace(std::piecewise_construct,
std::make_tuple(i),
std::make_tuple(v));
}