Использование вектора неподписанных символов на карте

Мне нужна помощь в использовании 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));

}
Другие вопросы по тегам