在java中你可以有类似的东西:
Map<Foo, List<Bar>> things;
for(Foo foo : things.getKeySet()){
List<bar> = things.get(foo);
}
是否有等效的c ++,可能在std :: map中?谢谢你的帮助。
答案 0 :(得分:1)
请参阅std::map和std::vector(ArrayList)以及std::unordered_map(HashMap)和std::list(LinkedList)
例如:
#include <map>
#include <vector>
struct Foo {};
struct Bar {};
int main()
{
std::map<Foo, std::vector<Bar>> things;
for(auto& thing: things) {
const Foo& foo = thing.first; // key
std::vector<Bar>& bars = thing.second; // value
// use foo & bars here
}
}
注意: A std::map要求为用户定义的类型定义比较运算符,例如Foo
:
struct Foo
{
int i = 0;
Foo(int i): i(i) {}
// need a comparison operator for ordered containers
bool operator<(const Foo& foo) const { return i < foo.i; }
};