gpt4 book ai didi

c++ - 如何打印包含集合的 map 内容?

转载 作者:搜寻专家 更新时间:2023-10-31 01:12:28 26 4
gpt4 key购买 nike

我有一个 map 声明如下:

map < string, set<string> > index;
std::map < string, set<string> >::iterator iter;

我想打印index的内容。因此,我写了以下内容:

for (iter = index.begin(); iter!= index.end(); iter++){
cout << iter->first << endl;} // It's OK.

但是如果我尝试打印 iter->second,上面的代码将不起作用:

for (iter = index.begin(); iter!= index.end(); iter++){
cout << iter-> second << endl;} // Doesn't work.

我想那是因为 index 中的 second 是一组字符串,而不是一个简单的字符串。但是我怎样才能打印出来呢?

最佳答案

如果要打印

iter->second

使用运算符<<,你必须覆盖这个运算符!否则,使用集合迭代器迭代 iter->second 表示的字符串集合:

set<string>::iterator iterator_;

更新[迭代器]

迭代很容易,忍者解决方案是重载运算符! :P

迭代:

map<string, set<string> >::iterator iter_;
for (iter_ = index_.begin(); iter_ != index_.end(); iter_++) {
cout << iter_->first << " - ";
set<string>::iterator iterator_;
for (iterator_ = s.begin(); iterator_ != s.end(); iterator_++) {
cout << *iterator_ << " - ";
}
cout << endl;
}

更新[重载ostream& opeartor<<]

class MySet: public set<string> {
friend ostream& operator<<(ostream& out, const MySet& s) {
set<string>::iterator iterator_;
for (iterator_ = s.begin(); iterator_ != s.end(); iterator_++) {
out << *iterator_;
}
return out;
}

void test() {
map<string, MySet> index_;
map<string, MySet>::iterator iter_;
for (iter_ = index_.begin(); iter_ != index_.end(); iter_++) {
cout << iter_->first << " - ";
cout << iter_->second;
}
}
};

关于c++ - 如何打印包含集合的 map 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13703904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com