c++ - 如何迭代常量 vector ?

标签 c++ visual-c++

我有一个包含字段名称的 Student vector 。

我想遍历 vector 。

void print(const vector<Student>& students)
    {
    vector<Student>::iterator it;
    for(it = students.begin(); it < students.end(); it++)
        {
            cout << it->name << endl;
        }
    }

这在 C++ 中显然是非法的。

请帮忙。

最佳答案

您有两个(C++11 中三个)选项:const_iterator s 和索引(+ C++11 中的“range-for”)

void func(const std::vector<type>& vec) {
  std::vector<type>::const_iterator iter;
  for (iter = vec.begin(); iter != vec.end(); ++iter)
    // do something with *iter

  /* or
  for (size_t index = 0; index != vec.size(); ++index)
    // do something with vec[index]

  // as of C++11
  for (const auto& item: vec)
    // do something with item
  */
}

您应该更喜欢使用 !=而不是 <使用迭代器 - 后者不适用于所有迭代器,前者可以。使用前者,您甚至可以使代码更通用(这样您甚至可以在不触及循环的情况下更改容器类型)

template<typename Container>
void func(const Container& container) {
  typename Container::const_iterator iter;
  for (iter = container.begin(); iter != container.end(); ++iter)
    // work with *iter
}

关于c++ - 如何迭代常量 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890497/

相关文章:

c++ - Xcode 找不到 C++ 静态库

c++ - 如何安全、明智地确定指针是否指向指定缓冲区的某处?

c++ - 如何将 UNC 转换为本地路径

c++ - 文件重定向运算符 ">"不适用于 CreateProcess() API

visual-c++ - Visual C++ boolean 错误

visual-c++ - VC++/DEFAULTLIB 问题

c++ - 设置 DXGI_SWAP_CHAIN_DESC1 的 AlphaMode 成员会使 CreateSwapChainForHwnd 失败并返回 0x887a0001

javascript - 如何在 QWebView 中启用 localStorage?

c++ - 我正在尝试在 Visual Studio 2010 中编译 C++ 代码,但出现链接器错误

c++ - 如何检测USRP USB类型?