简体   繁体   English

我如何定义map :: iterator列表和list :: iterator的映射

[英]How I can define a list of map::iterator and map of list::iterator

I need a list of Map::iterator and map of List::iterator. 我需要一个Map :: iterator列表和List :: iterator的映射。 How I can do this: 我怎么能这样做:

typedef std::list<Map::iterator> List;
typedef std::map<int, List::iterator> Map;

Maybe I can use something like forward declaration for iterator? 也许我可以使用像迭代器的前向声明这样的东西?

Something like this should help you: 这样的事情可以帮助你:

#include <cassert>
#include <iostream>
#include <list>
#include <map>
#include <string>

struct decl_t {
    typedef std::map<std::string, decl_t> map_t;
    typedef std::list<std::pair<int, typename map_t::iterator>> list_t;

    list_t::iterator it;
};

int main(int argc, const char* argv[])
{
    decl_t::map_t map;
    decl_t::list_t list;

    auto list_it = list.emplace(list.end(), 42, decl_t::map_t::iterator());
    const auto pair = std::make_pair(std::string("key"), decl_t{list_it});
    auto result = map.insert(pair);
    assert(result.second);
    auto map_it = result.first;
    list_it->second = map_it;

    std::cout << list_it->second->first << std::endl;
    std::cout << map_it->second.it->first << std::endl;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM