【发布时间】:2019-05-30 14:50:27
【问题描述】:
我正在使用map 实现一个类,如下所示:
class Letras {
typedef std::pair<int, int> p_c;
std::map<char, p_c> bolsa;
public:
...
};
我想实现一个迭代器的功能,像这样使用:
Letras l;
Letras::iterator it;
for ( it = l.begin(); it != l.end(); ++it )
cout << *it << endl;
这样它就可以从std::map 第一个组件(键)中打印出chars。
提前致谢。
更多关于Letras的信息
Letras 是一个实现类似 Scrubble 的字母集的类,map 用于表示一组letras(西班牙语中的letters),如以下:
{{letter_1, {quantity_1, score_1}}, {letter_2, {quantity_2, score_2}}, ..., {letter_n, {quantity_n, score_n}}}
其中letter_i 是集合中的某个字母,quantity_i 是该字母在集合中的次数(类似 Scrubble 的字母集合可以有各种相同的字母),score_i 是字母分数.
我使用了地图,因为一个字母只能有一个关联的分数,所以在这个类中,i != j => letter_i != letter_j。
Letras 的用途是从 Diccionario 类(dictionary)中找到由某个字母集组成的最佳单词,该类实现了 DAWG 结构以实现快速搜索和查找。
【问题讨论】:
-
你还没有问过问题。
-
@KerrekSB 我正在寻求实现这一点的提示,我已经能够为其他类正确实现迭代器,但对于使用 STL 的类则不行
-
看起来这里需要一种“转换迭代器”。 (Boost有这样的东西。)
-
@mianfg 当
*l被调用时你想返回什么?不应该是*it吗? -
@KunalPuri 非常抱歉打错字了,当然是
*it而不是*l
标签: c++