Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 回路范围识别错误类型(C2440)_C++_For Loop_Syntax_Stl - Fatal编程技术网

C++ 回路范围识别错误类型(C2440)

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); 应该可以工作。迭

C2440错误(此行发生无法从“char”转换为“Text_iterator”):

作废打印(文档和数据)
{

对于(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;
}