加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何定义map :: iterator列表和list :: iterator的map

发布时间:2020-12-16 07:15:06 所属栏目:百科 来源:网络整理
导读:我需要一个Map :: iterator列表和List :: iterator的映射.我怎么能这样做: typedef std::listMap::iterator List;typedef std::mapint,List::iterator Map; 也许我可以使用像迭代器的前向声明这样的东西? 解决方法 这样的事情可以帮助你: #include casser
我需要一个Map :: iterator列表和List :: iterator的映射.我怎么能这样做:

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

也许我可以使用像迭代器的前向声明这样的东西?

解决方法

这样的事情可以帮助你:

#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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读