c ++中的Java hashmap.get()

时间:2015-06-05 19:05:39

标签: c++ stdmap

在java中你可以有类似的东西:

Map<Foo, List<Bar>> things;

for(Foo foo : things.getKeySet()){
    List<bar> = things.get(foo);
}

是否有等效的c ++,可能在std :: map中?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

请参阅std::mapstd::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; }
};