簡體   English   中英

如何初始化配對 <vector<pair<bool,int> &gt;,向量 <pair<bool,int> &gt;&gt;在C ++ 11中

[英]How to initialize pair<vector<pair<bool,int>>,vector<pair<bool,int>>> in C++11

我想初始化:

pair<vector<pair<bool,int>>,vector<pair<bool,int>>> pvp;

這樣,對於我來說:

pvp.first[i].first = true;

pvp.second[i].first = false;

我知道您可以通過循環執行此操作,但是沒有像矢量初始化那樣的更快方法嗎?

抱歉,我沒有直接回答這個問題,但是我沒有將該問題視為真正的問題。

通用數據結構很棒,但也許可以考慮考慮幾個類。 這樣,各個類的構造函數就可以根據需要(較小的片段)處理初始化。

初始化語法為:

pvp{ vector<pair<bool, int>>(5, { true, 0 }), vector<pair<bool, int>>(5, { false, 0 }) };

現在,您沒有指定數組的任何長度(或整數應該是什么),但這是完整的方法:

#include <tuple>
#include <vector>
#include <iostream>

using namespace std;

int main(){

    pair<vector<pair<bool, int>>, vector<pair<bool, int>>> pvp{ vector<pair<bool, int>>(5, { true, 0 }), vector<pair<bool, int>>(5, { false, 0 }) };

    for (auto i : pvp.first){
        cout << (i.first ? "true" : "false") << '\n';
    }
    for (auto i : pvp.second){
        cout << (i.first ? "true" : "false") << '\n';
    }

    return 0;
}

輸出:

 true
 true
 true
 true
 true
 false
 false
 false
 false
 false

如前所述,這種實現對於一個簡單的人類讀者來說太復雜了。 但是,將其分成較小的部分。

考慮使用typedef使代碼更易於閱讀。

using MyPair = pair<bool,int>;
using MyPairs = vector<MyPair>;
pair<MyPairs,MyPairs> pvp{MyPairs{make_pair(true,10)},
                          MyPairs{make_pair(false,11)}};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM