C++ 回路范围识别错误类型(C2440)
C2440错误(此行发生无法从“char”转换为“Text_iterator”):C++ 回路范围识别错误类型(C2440),c++,for-loop,syntax,stl,C++,For Loop,Syntax,Stl,C2440错误(此行发生无法从“char”转换为“Text_iterator”): 作废打印(文档和数据) { 对于(Text_iterator p:d)cout循环变量使用的类型不正确。该变量不是容器的迭代器,而是该容器的迭代器指向的对象 如果你有 std::vector<int> foo(10); 应该可以工作。循环变量的类型不正确。该变量不是容器的迭代器,而是该容器的迭代器指向的对象 如果你有 std::vector<int> foo(10); 应该可以工作。迭
作废打印(文档和数据)
{
对于(Text_iterator p:d)cout循环变量使用的类型不正确。该变量不是容器的迭代器,而是该容器的迭代器指向的对象
如果你有
std::vector<int> foo(10);
应该可以工作。循环变量的类型不正确。该变量不是容器的迭代器,而是该容器的迭代器指向的对象
如果你有
std::vector<int> foo(10);
应该可以工作。迭代容器的内容。因此,它不是关于迭代器,而是关于取消引用的迭代器
您的代码应该是:
void print(Document& d)
{
for (auto c : d) cout << c;
}
作废打印(文档和数据)
{
for(auto c:d)cout迭代容器的内容。因此,它不是关于迭代器,而是关于取消引用的迭代器
您的代码应该是:
void print(Document& d)
{
for (auto c : d) cout << c;
}
作废打印(文档和数据)
{
对于(auto c:d)cout或(better IMHO)for(const auto&p:d)cout或(better IMHO)for(const auto&p:d)cout,如果p
是自定义迭代器类型,则++p
可能更可取(在任何情况下都是一个良好的默认习惯)。如果p
是自定义迭代器类型,则++p
可能更可取(无论如何,这是一个良好的默认习惯)。
for (int e : foo) // or for (auto e : foo)
std::cout << e << " ";
for (std::vector<int>::iterator e : foo)
std::cout << *e << " ";
void print(Document& d)
{
// if p is cheap to copy
for (auto p : d) cout << p;
// if p is expensive to copy
for (const auto& p : d) cout << p;
}
void print(Document& d)
{
for (auto c : d) cout << c;
}
void print(Document& d)
{
for (auto p = d.begin(); p!=d.end(); p++) cout << *p;
}