The initialization syntax would be:
pvp{ vector<pair<bool, int>>(5, { true, 0 }), vector<pair<bool, int>>(5, { false, 0 }) };
Now, you didn't specify any length of the array (or what the integer should be), but here's the full approach:
#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;
}
Output:
true
true
true
true
true
false
false
false
false
false
As already mentioned, this implementation is too complex for a simple human reader to understand. Separate it into smaller pieces, though.