C++ 包含映射迭代器的映射
考虑以下类别:C++ 包含映射迭代器的映射,c++,c++11,C++,C++11,考虑以下类别: #include <string> #include <vector> #include <map> class a { private: struct map_vector; typedef std::map <std::string, map_vector>::iterator map_iterator; struct map_vector { std::vector <
#include <string>
#include <vector>
#include <map>
class a
{
private:
struct map_vector;
typedef std::map <std::string, map_vector>::iterator map_iterator;
struct map_vector
{
std::vector <map_iterator> my_vec;
};
private:
std::string my_string;
std::map <std::string, map_vector> my_map;
public:
a() : my_string("\0")
{
my_map.insert(std::pair <std::string, map_vector>(my_string, map_vector()));
};
void addToken(const std::string &token)
{
// add current token if it does not exist
map_iterator a_it1 = my_map.find(token);
if(a_it1 == my_map.end())
{
std::pair <map_iterator, bool> res = my_map.insert(std::pair <std::string, map_vector>(token, map_vector()));
a_it1 = res.first;
}
// add iterator of current token to previous token
map_iterator a_it2 = my_map.find(my_string);
a_it2->second.my_vec.push_back(a_it1);
// set previous token to current token
my_string = token;
}
};
我查看了以下链接:
- (这一点尤其重要,但我更希望有一张地图 迭代器(而不是我的结构中的映射指针)
a_it2->second.push_back(a_it1);