C++ 从元组列表中访问单个元组的元素 #包括 #包括 #包括 #包括 使用名称空间std; int main() { 列出XYZ_Widget_商店; 河流充填; infile.open(“data.text”); char x;//S,P,R 双a,b; 对于(;infle>>x>>a>>b;){ XYZ_Widget_Store.push_back(生成元组(x,a,b)); } infle.close(); 对于(list::iterator it=XYZ_Widget_Store.begin();它= XYZ_Widget_Store.end();++it){ cout
您需要使用C++ 从元组列表中访问单个元组的元素 #包括 #包括 #包括 #包括 使用名称空间std; int main() { 列出XYZ_Widget_商店; 河流充填; infile.open(“data.text”); char x;//S,P,R 双a,b; 对于(;infle>>x>>a>>b;){ XYZ_Widget_Store.push_back(生成元组(x,a,b)); } infle.close(); 对于(list::iterator it=XYZ_Widget_Store.begin();它= XYZ_Widget_Store.end();++it){ cout,c++,list,stl,tuples,C++,List,Stl,Tuples,您需要使用get(*it)来获取第一个元素,因为it是指向tuple的指针。因此,for循环中的语句应该是: #include <iostream> #include <fstream> #include <list> #include <tuple> using namespace std; int main() { list<tuple<char,double,double>> XYZ_Widget_Stor
get(*it)
来获取第一个元素,因为it
是指向tuple的指针。因此,for
循环中的语句应该是:
#include <iostream>
#include <fstream>
#include <list>
#include <tuple>
using namespace std;
int main()
{
list<tuple<char,double,double>> XYZ_Widget_Store;
ifstream infile;
infile.open("data.text");
char x; // S, P, R
double a,b;
for(;infile >> x >> a >> b;){
XYZ_Widget_Store.push_back(make_tuple(x,a,b));
}
infile.close();
for(list<int>::iterator it = XYZ_Widget_Store.begin(); it !=
XYZ_Widget_Store.end(); ++it){
cout << *it.get<0> << endl;
}
return 0;
}
cout如果你打算使用C++11,你还可以使用其他优秀的功能,如auto
和for-each循环。下面是你如何为循环重新编写最后一个:
cout << get<0>(*it) << endl;
for(自动&tup:XYZ\u小部件存储){
cout如果it
是一个list::iterator
,那么*it
将为您提供类型为T
的对应对象。因此,您需要使用get(*it)
来访问相应的元组元素。在for
循环中还有另一个错误:而不是
for (auto& tup : XYZ_Widget_Store) {
cout << get<0>(tup) << endl;
}
您的第一个for
循环在时没有编写为的原因是什么?谢谢,我实际上不熟悉该功能
list<int>::iterator it = XYZ_Widget_Store.begin()
list<tuple<char,double,double>>::iterator it = XYZ_Widget_Store.begin().
auto it = XYZ_Widget_Store.begin()