[英]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.