gpt4 book ai didi

c++ - 如何迭代通用 vector

转载 作者:行者123 更新时间:2023-11-27 22:50:40 27 4
gpt4 key购买 nike

我一直觉得 C++ 模板难以理解,C++ 错误消息更是如此。我想了解它,而不是总是感到困惑。这是最新的奇异体验:

error: conversion from ‘<unresolved overloaded function type>’ to non-scalar type ‘std::vector<int>::iterator {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}’ requested

这段代码来自以下代码:

#include <iostream>
#include <vector>

using namespace std;

template <typename T>
void printVector(const vector<T>& v) {
for (typename vector<T>::iterator iter = v.begin; iter != v.end; iter++) {
cout << *iter << endl;
}
}

int main() {
vector<int> v{1, 2, 3};
printVector(v);
return 0;
}

如果我使用 C++11 基于范围的循环,则迭代 vector 没有问题。我想学习如何使用迭代器来做到这一点。

谁能解释错误的含义以及如何修复它?

如果能推荐一本很好地解释模板的书,那就太好了。

最佳答案

仔细查看错误信息。它说您正在尝试将函数转换为迭代器。您应该通过添加 () 来调用它们。

改变

for (typename vector<T>::iterator iter = v.begin; iter != v.end; iter++) {

for (typename vector<T>::iterator iter = v.begin(); iter != v.end(); iter++) {
~~ ~~

对于 C++ 书籍,The Definitive C++ Book Guide and List

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com