加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C STL向量迭代器访问对象的成员

发布时间:2020-12-16 05:38:11 所属栏目:百科 来源:网络整理
导读:我想我已经正确地声明了一个Vector对象.但是,当循环使用Iterator时,我不知道如何访问它的成员. 在我的代码中,行— cout “” * Iter项目; 如何打印会员的内容?喜欢* Iter.m_PackLine ??? 不知道如果我使用了正确的术语,但是感谢帮助!谢谢 class CFileInfo{
我想我已经正确地声明了一个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;

  vector<CFileInfo,CFileInfo&> unsortedFiles;
  vector<CFileInfo,CFileInfo&>::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

解决方法

cout << " " << *Iter;

仅当CFileInfo具有重载运算符<<<可以输出你的结构.您可以输出结构体的各个成员,如下所示:

cout << " " << Iter->m_PackLine;

或者,以下相当于:

cout << " " << (*Iter).m_PackLine;

你必须在* Iter周围放置括号,因为成员访问运算符否则绑定更严格.

在一个侧面节点上,使你的main函数返回int而不是void.使其返回void在C中无效.

你这样宣告向量:

vector<CFileInfo,CFileInfo&> unsortedFiles;

向量的第二个参数应该是另一回事.你的代码根本不需要给第二个参数.只需使用:

vector<CFileInfo> unsortedFiles;

我注意到另一件事是你使用Iter来增加迭代器(称为后缀增量).对于迭代器,总是喜欢Iter,称为前缀增量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读