const-iterator相关内容

如何更改集合元素?

我想更改 set 中的元素,所以我使用了 set::iterator.但是,编译器认为“元素是 const".然后我意识到 set::iterator 是一个 const_iterator... 那么,我怎样才能改变元素呢?删除它然后插入一个新的? 解决方案 set 的元素会按顺序排列.如果允许你修改一个元素,那么这个排序顺序就不能保持.因此,您不能修改该项目.您需要删除 ..
发布时间:2022-01-17 18:00:20 C/C++开发

C++ 迭代器到 const_iterator

如何在 C++ 中从 iterator(该容器类的)获取一个 const_iterator(某个容器类的)?insert_iterator 中的 const_iterator 怎么样?生成的 iterator 应该指向与原始位置相同的位置. 解决方案 容器需要提供 iterator 作为可转换为 const_iterator 的类型,所以可以隐式转换: Container::iterat ..
发布时间:2022-01-10 15:02:34 C/C++开发

我应该更喜欢迭代器而不是 const_iterators 吗?

最近有人提出 Scott Meyers 的文章说: 更喜欢 iterators 而不是 const_iterators (pdf 链接). 其他人评论说这篇文章可能已经过时了.我想知道你的意见是什么? 这是我的:这篇文章的主要观点之一是您不能在 const_iterator 上擦除或插入,但我认为将其用作反对 const_iterators.我认为 const_iterators ..
发布时间:2022-01-10 14:53:33 C/C++开发

const_iterator 和迭代器有什么区别?

这两者在 STL 内部实现方面有什么区别.性能有什么区别?我想当我们以“只读方式"遍历向量时,我们更喜欢 const_iterator,对吧? 谢谢. 解决方案 没有性能差异. const_iterator 是一个指向 const 值的迭代器(类似于 const T* 指针);取消引用它会返回对常量值 (const T&) 的引用并防止修改引用的值:它强制执行 const-正确 ..
发布时间:2022-01-10 14:26:47 C/C++开发

cbegin/cend 背后的原因是什么?

我想知道为什么在 C++11 中引入了 cbegin 和 cend ? 在哪些情况下调用这些方法与 begin 和 end 的 const 重载有区别? 解决方案 很简单.假设我有一个向量: std::vector向量; 我用一些数据填充它.然后我想得到一些迭代器.也许让他们四处走动.也许到 std::for_each: std::for_each(vec.begin(), v ..
发布时间:2022-01-10 14:19:54 C/C++开发

如何删除 const_iterator 的常量?

作为这个问题的扩展const_iterators 更快吗?,我还有一个关于 const_iterators 的问题.如何删除 const_iterator 的常量?尽管迭代器是指针的广义形式,但 const_iterator 和 iterator 仍然是两个不同的东西.因此,我相信,我也不能使用 const_cast 从 const_iterator 转换为 iterators. 一种方 ..
发布时间:2022-01-10 14:14:02 C/C++开发

如何正确实现自定义迭代器和 const_iterators?

我有一个自定义容器类,我想为其编写 iterator 和 const_iterator 类. 我以前从未这样做过,也没有找到合适的方法.关于迭代器创建的准则是什么?我应该注意什么? 我还想避免代码重复(我觉得 const_iterator 和 iterator 共享很多东西;一个应该继承另一个吗?). 脚注:我很确定 Boost 可以缓解这种情况,但由于许多愚蠢的原因,我不能在这 ..
发布时间:2022-01-10 14:07:22 C/C++开发

如何实现 STL 风格的迭代器并避免常见的陷阱?

我创建了一个集合,我想为其提供一个 STL 风格的随机访问迭代器.我正在四处寻找迭代器的示例实现,但没有找到.我知道 [] 和 * 运算符需要 const 重载.迭代器要成为“STL 风格"的要求是什么?还有哪些其他需要避免的陷阱(如果有的话)? 附加上下文:这是一个库,我不想引入任何对它的依赖,除非我真的需要.我编写了自己的集合,以便能够使用相同的编译器提供 C++03 和 C++11 之 ..
发布时间:2022-01-10 14:06:54 C/C++开发

自己的容器类的 C++ 迭代器和 const_iterator 问题

我正在编写一个自己的容器类,但遇到了一个我无法理解的问题.这是显示问题的基本示例. 它由一个容器类和两个测试类组成:一个使用 std:vector 的测试类可以很好地编译,第二个测试类尝试以完全相同的方式使用我自己的容器类,但编译失败. #include #include #include 使用命名空间标准;模板 类 MyContainer{上市:类迭代器{上市:typedef 迭代器 s ..
发布时间:2022-01-07 11:48:56 C/C++开发

const_iterator 和 iterator 有什么区别?

这两者在 STL 内部实现有什么区别.性能有什么区别?我想当我们以“只读方式"遍历向量时,我们更喜欢 const_iterator,对吧? 谢谢. 解决方案 没有性能差异. const_iterator 是一个指向 const 值的迭代器(就像一个 const T* 指针);取消引用它返回对常量值的引用(const T&)并防止修改引用的值:它强制执行 const-正确性. ..
发布时间:2022-01-07 11:23:10 C/C++开发

const_iterators 更快吗?

我们的编码指南更喜欢 const_iterator,因为与普通的 iterator 相比,它们要快一些.当您使用 const_iterator 时,编译器似乎优化了代码. 这真的正确吗?如果是,那么内部究竟发生了什么使 const_iterator 更快?. 编辑:我写了一个小测试来检查 const_iterator 与 iterator 并发现不同的结果: 对于迭代 10,00 ..
发布时间:2022-01-07 11:14:30 C/C++开发

如何删除 const_iterator 的常量性?

作为这个问题的扩展const_iterators 是否更快?,我还有一个关于 const_iterators 的问题.如何删除 const_iterator 的常量性?虽然迭代器是指针的一般形式,但 const_iterator 和 iterator 仍然是两个不同的东西.因此,我相信,我也不能使用 const_cast 从 const_iterator 转换到 iterators. 一 ..
发布时间:2022-01-07 11:01:49 C/C++开发

迭代对的向量

我已经编写了以下代码片段,但它似乎不起作用. int main(){int VCount, v1, v2;对>边缘;向量>>边缘;浮动 w;cin >>VCount;while(cin>v1){cin >>v2>>w;edge.first = w;edge.second.first = v1;edge.second.second = v2;edge.push_back(edge);}排序(edg ..
发布时间:2021-08-30 19:18:25 C/C++开发

如何在自定义列表迭代器类中将迭代器转换为const_iterator?

我试图用C ++实现自己的双向链接列表(my_list)代码,尤其是列表的迭代器类.我的问题是我想从迭代器到const_iterator进行隐式转换,以便例如代码my_list::iterator it = l.begin();其中l是my_list的实例进行编译.但是,在没有编译器抱怨的情况下,我找不到解决方法. 这是实现列表节点和迭代器类的代码: template ..
发布时间:2021-02-09 19:38:38 C/C++开发

如何更改设置元素?

我想更改 set 中的元素,所以我使用了 set :: iterator 。但是,编译器认为“元素是const”。然后我意识到 set :: iterator 是 const_iterator ... 那么,如何更改元素?删除它,然后插入一个新的吗? 解决方案 集中的元素将按排序顺序。如果允许您修改元素,则无法保持此排序顺序。因此,您不能修改该项目。您需要删除现有元素 ..
发布时间:2020-09-26 22:41:14 C/C++开发