我想我已经正确地声明了一个带有对象的Vector.但是,在使用Iterator进行循环时,我不知道如何访问它的成员.
在我的代码中,行--- >> cout <<""<<*Iter;
如何打印成员的内容?喜欢*Iter.m_PackLine ???
不确定我是否使用了正确的术语,但感谢您的帮助!谢谢
class CFileInfo { public: std::string m_PackLine; std::string m_FileDateTime; int m_NumDownloads; }; void main() { CFileInfo packInfo; vectorunsortedFiles; vector ::iterator Iter; packInfo.m_PackLine = "Sample Line 1"; packInfo.m_FileDateTime = "06/22/2008 04:34"; packInfo.m_NumDownloads = 0; unsortedFiles.push_back(packInfo); packInfo.m_PackLine = "Sample Line 2"; packInfo.m_FileDateTime = "12/05/2007 14:54"; packInfo.m_NumDownloads = 1; unsortedFiles.push_back(packInfo); for (Iter = unsortedFiles.begin(); Iter != unsortedFiles.end(); Iter++ ) { cout << " " << *Iter; // !!! THIS IS WHERE I GET STUMPED // How do I output values of the object members? } } // end main
Johannes Sch.. 16
cout << " " << *Iter;
只有在可以输出结构CFileInfo
的重载时才会起作用operator<<
.您可以输出结构的各个成员,如下所示:
cout << " " << Iter->m_PackLine;
或者,以下内容相当于:
cout << " " << (*Iter).m_PackLine;
你必须在*Iter周围加上括号,因为成员访问运算符会绑定更严格的.
在side-node上,使main函数返回int而不是void.使其返回void在C++中无效.
你声明这样的向量:
vectorunsortedFiles;
第二个论点vector
应该是另一回事.您的代码不需要为向量提供第二个参数.只要用这个:
vectorunsortedFiles;
我注意到的另一件事是你使用Iter++
(调用postfix increment
)增加迭代器.对于迭代器,总是更喜欢++Iter
,这被称为prefix increment
.
cout << " " << *Iter;
只有在可以输出结构CFileInfo
的重载时才会起作用operator<<
.您可以输出结构的各个成员,如下所示:
cout << " " << Iter->m_PackLine;
或者,以下内容相当于:
cout << " " << (*Iter).m_PackLine;
你必须在*Iter周围加上括号,因为成员访问运算符会绑定更严格的.
在side-node上,使main函数返回int而不是void.使其返回void在C++中无效.
你声明这样的向量:
vectorunsortedFiles;
第二个论点vector
应该是另一回事.您的代码不需要为向量提供第二个参数.只要用这个:
vectorunsortedFiles;
我注意到的另一件事是你使用Iter++
(调用postfix increment
)增加迭代器.对于迭代器,总是更喜欢++Iter
,这被称为prefix increment
.