首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ -打印Map<struct,结构,constructor>类型

C++ -打印Map<struct,结构,constructor>类型
EN

Stack Overflow用户
提问于 2013-12-08 10:36:21
回答 1查看 143关注 0票数 0

我目前有以下代码:

代码语言:javascript
复制
struct LR0Item{
    LR0Item(const string& lhs_p, vector<string> rhs_p, int dpos_p)
     : lhs(lhs_p), rhs(rhs_p), dpos(dpos_p) {}
    string lhs;
    vector<string> rhs;
    int dpos;
};

struct Node{
    Node( LR0Item* lr) : item(lr) {}
    LR0Item* item;
    map<string, Node*> tr;
};

struct fizz{
    bool operator()(
                    const LR0Item &a,
                    const LR0Item &b) {
                        if(a.lhs != b.lhs)
                            return a.lhs<b.lhs;
                        if(a.dpos != b.dpos)
                            return a.dpos<b.dpos;
                        return a.rhs<b.rhs;
                    }
};

    vector<Node*> N;
    map<LR0Item,Node*,fizz> nmap;

我有一些杂项代码来填充nmap的数据。我想知道如何以一种很好的格式(横向nmap)打印数据。另外,我也不完全确定'fizz‘在做什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-08 11:23:10

我将给您一个提示,而不是编写整个代码:

代码语言:javascript
复制
typedef map<LR0Item,Node*,fizz> Mymap;

Mymap::iterator it = nmap.begin();

for(;it != nmap.end() ;++it) {

   //it->first is your key of type LR0Item
   //it->second is your value of type Node*
   LR0Item key = it->first ;
   Node* val_ptr = it->second;
   /*
   Now use key.lhs,  --> std::string
           key.rhs,  --> std::vector
           key.dpos  --> int

   And 
           val_ptr->item, --> LR0Item*
           val_ptr->tr    --> map of std::string as key and Node* as its value

   */
}

而且,“我也不完全确定'fizz‘在做什么。”

fizz是一个函子,用作自定义比较器,用于将元素插入到映射nmap中。

请参阅

基本上,它首先比较:

  • 字符串lhs,如果等于,则按
  • int dpos,如果等于,则由
  • 向量rhs 词典学
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20452401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档