Если у меня есть неупорядоченная карта unordered_sets, проиндексированная по строкам, например,
static boost::unordered_map<std::string, boost::unordered_set<std::string> > UseMap;
У меня возник вопрос по поводу использования этой структуры данных.Можно ли как-нибудь вставить новое значение в набор, проиндексированный на карте, без необходимости использовать указатель на набор или переиндексировать значение карты?
Второй вопрос, я получаю неразрешенную внешнюю ошибку символа, когда пытаюсь проиндексировать карту.Например,
void AddUse(const std::string &character, const std::string& used)
{
auto set = UseMap[character];
set.insert(used);
UseMap[character] = set;
}
Я не уверен, почему это вызывает неразрешенную ошибку символа, поэтому любые указания там будут полезны.
Заранее спасибо
РЕДАКТИРОВАТЬ: любое использование UseMap [символ] вызывает неразрешенную ошибку символа
Также добавлен код ошибки и пример источника
Полный класс
#pragma once
#ifndef _SINGLEUSE_H_
#define _SINGLEUSE_H_
#include <boost/unordered_map.hpp>
#include <boost/unordered_set.hpp>
#include <string>
#include <vector>
class SingleUse
{
public:
void AddUse(const std::string& character, const std::string& used)
{
UseMap[character].insert(used);
}
bool HasUsed(const std::string &character, const std::string& used)
{
return false;//UseMap[character].find(used) != UseMap[character].end();
}
void ClearAll()
{
UseMap.clear();
}
private:
static boost::unordered_map<std::string, boost::unordered_set<std::string> > UseMap;
};
И полное сообщение об ошибке:
Ошибка 52: ошибка LNK2001: неразрешенный внешний символ "private: статический класс boost :: unordered_map, класс std :: allocator>, класс boost :: unordered_set, класс std :: allocator>, struct boost :: hash,класс std :: allocator>>, структура std :: equal_to, класс std :: allocator>>, класс std :: allocator, класс std :: allocator>>>, структура boost :: hash, класс std :: allocator>>, структура std :: equal_to, класс std :: allocator>>, класс std :: allocator, класс std :: allocator> const, класс boost :: unordered_set, класс std :: allocator>, структура boost :: hash, класс std:: allocator>>, struct std :: equal_to, класс std :: allocator>>, класс std :: allocator, класс std:: allocator>>>>>> SingleUse :: UseMap "(? UseMap @ SingleUse @@ 0V? $ unordered_map @ V? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@станд @@ V? $ unordered_set @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@ U? $ хэш @ V? $ basic_string @ DU? $ char_traits@ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@@ увеличить @@ U? $ equal_to @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @2 @@ станд @@@ 2 @ V? $ распределитель @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@@ 2 @@ @@ U увеличить? $ хэш @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@@ 4 @ U? $ equal_to @ V? $ basic_string @ DU? $ char_traits @D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@@ 2 @ V? $ распределитель @ U? $ пара @ $$ ОЦК? $ basic_string @ DU? $ char_traits @ D @ станд @@ V?$ распределитель @ D @ 2 @@ станд @@ V? $ unordered_set @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@ U? $ хэш @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@@ увеличить @@ U? $ equal_to @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@V? $ распределитель @ D @ 2 @@ станд @@@ 2 @ V & beta; $ распределитель @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @2 @@ std @@@ 2 @@ boost @@@ std @@@ 2 @@ boost @@ A) G: \ Documents \ Проекты программирования \ KHMP \ KHMP_Repo \ KHMP \ build \ KHMP \ KHMP \ KHMPMain.obj