gpt4 book ai didi

c++ - 如何打印 std::set of std::maps

转载 作者:行者123 更新时间:2023-11-30 01:40:34 26 4
gpt4 key购买 nike

这是带有字符串键和结构值的映射1.首先我创建一个整数映射和一个结构作为值 std::map<int,struct value>;然后我将所有这些 map 对象添加到一个集合中 std::set<std::map<int,struct value>>我想了解如何遍历这个集合我无法访问属于该集合的 map ,请提出建议

struct values
{
std::string a;
std::string b;
values():a("milepost"),b("dummyval"){};
values( std::string ab, std::string bc)
{
a=ab;
b=bc;
};

bool operator<(const values& other) const {
return (a< other.a && b < other.b) ;
}
friend std::ostream& operator<<(std::ostream& os, const values& val);

};

std::ostream& operator<< (std::ostream& os , const values& val)
{
os << val.a <<"\t"<< val.b;
return os;

}

typedef std::map<std::string,values> myWsData;

main()
{
values a;

myWsData et_Data1,pt_Data2;

et_Data2.insert(std::make_pair("780256", a));

pt_Data2.insert(std::make_pair("780256", a));

std::set<myWsData> myet_pt_data;

myet_pt_data.insert(et_Data1);

myet_pt_data.insert(pt_Data2);

for (auto &i:myet_pt_data)
{
std::cout<<i<<"\n";
}
}

最佳答案

你必须使用两个循环,像这样:

for (auto const& it1 : myet_pt_data)
{
for (auto const& it2 : it1)
{
std::cout << it2.first << '\t' << it2.second << std::endl;
}
}

当您使用 auto const& 时在你的range-based for loops您避免复制集合及其所有内容。类型如下:

  • decltype(it1)std::map<std::string,values> const& , 和
  • decltype(it2)std::pair<std::string const,values> const&

为了完整起见,请注意 std::stringit2 (std::pair)是常量。

关于c++ - 如何打印 std::set of std::maps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43041452/

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