C++ 迭代器错误
c++ iterator error
我对迭代器有问题。你能解释一下为什么这段代码吗:
vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++)
{
vector<int> var = *it;
sort(var.begin(), var.end() );
}
没问题,使用以下代码:
vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++)
{
sort(*it.begin(), *it.end() );
}
错了?编译器说*它没有成员开始,但我不知道为什么。
运算符优先级。
*it.begin()
与*(it.begin())
相同。 您需要(*it).begin()
(或等效表达式,it->begin()
(。
也就是说,你需要"调用it
指向的对象begin()
的成员函数",而不是"尊重在it
上begin()
调用成员函数的结果"(it
没有成员函数begin()
,这就是为什么编译器给你得到的错误消息(。
运算符 "." 的绑定力强于运算符 "*"。尝试
vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++){
sort(it->begin(), it->end() );
}
相反。
您的代码的工作方式如下:
vector<vector<int> >::iterator it = v.begin();
for(; it < v.end(); it++)
{
sort(*(it.begin()), *(it.end()) );
}
it
根本没有成员begin
因为it
是一个简单的迭代器。
相关文章:
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 初始化迭代器错误 C++ 在 GCC 编译器中
- 迭代器类的重载前缀增量运算符会引发分段错误
- 为什么我在使用 istream 迭代器时会出现 seg 错误?
- 在静态库中使用输出迭代器时出现链接器错误
- 在分配和发布递增循环迭代器时C++无限循环(gcc 错误?
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- C++结构编译器错误询问向量的迭代器
- 编译时二叉搜索树错误的反向迭代器表示"no matching function call for operator=()"
- 编译错误 std::vector<std::shared_ptr<T>>迭代器和擦除方法
- 赛松迭代器错误
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- C++,弹出调试断言失败窗口,我得到矢量迭代器不兼容的错误运行时
- 在 leveldb 的 c++ 示例中声明迭代器时出现分段错误
- std::map 擦除 - 将迭代器传递给错误的映射
- C++向量迭代器nth_element编译错误
- 如何修复错误,迭代器未在此范围内声明,并且迭代器未命名类型'
- 如何修复使用矢量和迭代器打印值的错误
- C++ 迭代器错误"does not refer to a value"
- 使用 -std=c++0x 会导致错误:“迭代器”未命名类型错误