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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |