【问题标题】:Calling each vector in vector<vector<pair<int, int>>>调用 vector<vector<pair<int, int>>> 中的每个向量
【发布时间】:2021-08-02 11:22:12
【问题描述】:

我有一组值保存到:

vector<vector<pair<int, int>>> subsets

如果我想输出向量中每个向量的值。我该怎么做呢? vector> 的格式为

vector<pair<int, int>> = <(1, 2) (2, 3) (5,0)>

子集将包含多组向量

[1] <(1, 2) (2, 3) (5,0)>
[2] <(1, 2) (4, 8) > 
[3] <(0, 1) (5, 5) (1, 1)> 
etc...

如果有人建议以其他方式执行此操作,请分享! C++ 中的数据结构对我来说有点神秘。

编辑: 通过调用对的第一个和第二个,我能够到达 vector>。

for (pair<int, int> p : items)
        cout << "(" << p.first << ", " << p.second << ") ";

subset.at(0) 调用似乎无法识别向量中的向量。

【问题讨论】:

标签: c++


【解决方案1】:

这是一个例子:

#include <iostream>
#include <vector>
#include <utility>

int main() {
    std::vector<std::vector<std::pair<int, int>>> subsets{
        {{1, 2}, {2, 3}, {5,0}},
        {{1, 2}, {4, 8}}, 
        {{0, 1}, {5, 5}, {1, 1}}
    };

    for(auto& inner : subsets) {    // loop over the outer vector
        auto it = inner.begin();    // get iterator for the inner vector

        std::cout << '<';
        if(it != inner.end()) {

            // print the first pair
            std::cout << '(' << it->first << ',' << it->second << ')';

            // print the rest of the pairs
            for(++it; it != inner.end(); ++it) {
                std::cout << " (" << it->first << ',' << it->second << ')';
            }
        }
        std::cout << ">\n";
    }
}

输出:

<(1,2) (2,3) (5,0)>
<(1,2) (4,8)>
<(0,1) (5,5) (1,1)>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 2011-10-29
    相关资源
    最近更新 更多