从单键多值容器访问特定值

时间:2019-06-18 12:46:52

标签: c++ iterator containers

我正在尝试使用C ++实现多值容器,并自由访问其中的每个值。我有int键; X,Y,宽度,高度等值作为输入。

我正在尝试从每个键中提取值。 但是很明显,在这种情况下,代码不起作用。

无论是可以做到还是在访问多个值方面具有更好的灵活性的任何预定义容器库,我都希望获得一些建议。

我尝试了独立的单键,单值'multimap'容器,但是它占用了过多的内存空间和拖动性能

multimap<int, multimap <multimap<int, int>, multimap<int, int>>> BlobPos = {};
//[<1,{(2,3),(4,5)}>,<2,{(6,7),(8,9)}>


for (auto it = BlobPos.begin();it != BlobPos.end(); it++) { 
auto X = it->second-> first->first; 
auto Y = it->second->first->second;
auto H = it->second->second->first;
auto W =  it->second-second->second;

cout << X << Y << H << W;

2 3 4 5
   6 7 8 9

1 个答案:

答案 0 :(得分:0)

以下是一个容器的示例,该容器的结构几乎与您的问题中所述相同:

#include <map>
#include <utility>
#include <iostream>

int main() {

    std::map<int, std::pair<std::pair<int, int>, std::pair<int, int>>> BlobPos = {{1, {{2, 3}, {4, 5}}}, {2, {{6, 7}, {8, 9}}}};
    for (auto it = BlobPos.begin();it != BlobPos.end(); it++) { 
        auto X = it->second.first.first; 
        auto Y = it->second.first.second;
        auto H = it->second.second.first;
        auto W = it->second.second.second;

        std::cout << X << Y << H << W << '\n';
    }
    return 0;
}

引用需要运算符->,但下一级使用运算符.来访问元素。