我想初始化:
pair<vector<pair<bool,int>>,vector<pair<bool,int>>> pvp;
所以i:
pvp.first[i].first = true;
和
pvp.second[i].first = false;
我知道您可以通过循环执行此操作,但是没有像initialization for a vector更快的方式吗?
答案 0 :(得分:3)
抱歉,我没有直接回答这个问题,但我认为问题不是真正的问题。
通用数据结构很棒,但也许考虑几个类。这样,各个类构造函数可以根据需要处理初始化(以较小的部分)。
答案 1 :(得分:1)
初始化语法为:
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
如前所述,这种实现过于复杂,无法让简单的人类读者理解。但是,将它分成小块。
答案 2 :(得分:1)
考虑使用typedef使代码更容易阅读。
using MyPair = pair<bool,int>;
using MyPairs = vector<MyPair>;
pair<MyPairs,MyPairs> pvp{MyPairs{make_pair(true,10)},
MyPairs{make_pair(false,11)}};