您似乎没有完全指定迭代器的类型:
使用 auto 或用于 C++11 之前的编译器
vector<tuple< std::vector<int>, std::vector<int>, std::vector<int> > >::iterator
同样在你的主循环中,你必须遍历每个元组内的内部向量。
以下是您可以使用的或多或少的变体,具体取决于您希望输出的方式:
1.变体:元组输出(假设所有向量具有相同的大小)
int main() {
std::vector<std::tuple< std::vector<int>, std::vector<int>, std::vector<int> > > taborder;
for (int i = 1; i < 4; i++){
std::vector<int> id (i,5);
std::vector<int> x (i,10);
std::vector<int> y (i,15);
taborder.push_back(std::make_tuple(id, x, y));
}
for(vector<tuple< std::vector<int>, std::vector<int>, std::vector<int> > >::iterator iter = taborder.begin(); iter != taborder.end(); iter++){
// or
// for(auto iter = taborder.begin(); iter != taborder.end(); iter++){
auto mytuple = *iter;
// You have to iterate over all the inner vectors
for (unsigned int i = 0; i < get<0>(mytuple).size(); ++i ) {
cout << get<0>(mytuple)[i] << "\t" << get<1>(mytuple)[i] << "\t" << get<2>(mytuple)[i] << endl;
}
}
}
2。变体:每个元组向量(正如其他分析器已经显示的那样)
int main() {
std::vector<std::tuple< std::vector<int>, std::vector<int>, std::vector<int> > > taborder;
for (int i = 1; i < 4; i++){
std::vector<int> id (i,5);
std::vector<int> x (i,10);
std::vector<int> y (i,15);
taborder.push_back(std::make_tuple(id, x, y));
}
for(vector<tuple< std::vector<int>, std::vector<int>, std::vector<int> > >::iterator iter = taborder.begin(); iter != taborder.end(); iter++){
// or
// for(auto iter = taborder.begin(); iter != taborder.end(); iter++){
auto mytuple = *iter;
for (unsigned int i = 0; i < get<0>(mytuple).size(); ++i ) {
cout << get<0>(mytuple)[i] << "\t";
}
cout << endl;
for (unsigned int i = 0; i < get<1>(mytuple).size(); ++i ) {
cout << get<1>(mytuple)[i] << "\t";
}
cout << endl;
for (unsigned int i = 0; i < get<2>(mytuple).size(); ++i ) {
cout << get<2>(mytuple)[i] << "\t";
}
cout << endl;
}
}