iterator相关内容

std :: map迭代器如何工作?

C ++ STL类std :: map使用二叉树实现O(log(n))查找。但是对于树,迭代器的工作并不明显。 ++运算符在树结构中实际意味着什么?而“下一个元素”的概念在数组中有一个明显的实现,对我来说,它在树中不那么明显。如何实现树迭代器? 解决方案 对于一个遍历(可能也适用于其他人),如果你有一个父-pointer在你的节点你可以做一个非递归的遍历。应该可以只在你的迭代器中存储两个指 ..
发布时间:2016-10-26 23:01:06 C/C++开发

通用C ++多维迭代器

在我目前的项目中,我处理的是一个多维数据结构。 基础文件按顺序存储(即一个巨大的数组,没有矢量矢量)。 使用这些数据结构的算法需要知道单个维度的大小。 我想知道一个多维迭代器类是否在一个通用的如果有任何标准或首选方法如何解决这个问题。 目前,我只是使用一个线性迭代器与一些额外的方法,返回的大小每个维度和第一部分中有多少维度。我不喜欢它的原因是因为我不能使用std :: distan ..
发布时间:2016-10-26 22:56:49 C/C++开发

为什么在std :: map(和STL的其他关联容器)上没有front()方法?

STL参考似乎在概念上有所不同: 一方面 '关联容器'(set multiset map multimap unordered_set unordered_multiset unordered_map unordered_multimap) 此外,看起来我们有: 所有实现 begin()方法的容器返回指向容器中第一个元素的迭代器。 只有具有 front()方法的序列容器返回对 ..
发布时间:2016-10-26 21:53:48 C/C++开发

迭代器继承和继承* this

如何编写一个基类和多个派生类的迭代器? 迭代器是否必须返回自己? b 到目前为止,我使用 typename X 和 static_cast(* this)允许派生类继承一个从基类返回自身的函数。 这个看起来很丑。有更好的方法吗? 简化代码: #include #include template ..
发布时间:2016-10-25 16:54:27 C/C++开发

迭代器继承和继承* this

如何编写一个基类和多个派生类的迭代器? 迭代器是否必须返回自己? b 到目前为止,我使用 typename X 和 static_cast(* this)允许派生类继承一个从基类返回自身的函数。 这个看起来很丑。有更好的方法吗? 简化代码: #include #include template ..
发布时间:2016-10-25 16:51:53 C/C++开发

如何实现“InterpolatedVector”?

我有一个 std :: vector ,我需要插值它的值。例如只有一个中间值,并且给定一个向量填充 1/2/3/4 我要访问以下值 1 / 1.5 / 2 / 2.5 / 3 / 3.5 / 4 不需要存储这个中间值(简单的线性插值,我不必太频繁地读取),所以我写了这个简单的类: typedef std :: vec ..
发布时间:2016-10-25 16:50:26 C/C++开发

如何实现“InterpolatedVector”?

我有一个 std :: vector ,我需要插值它的值。例如只有一个中间值,并且给定一个向量填充 1/2/3/4 我要访问以下值 1 / 1.5 / 2 / 2.5 / 3 / 3.5 / 4 不需要存储这个中间值(简单的线性插值,我不必太频繁地读取),所以我写了这个简单的类: typedef std :: vec ..
发布时间:2016-10-25 16:42:45 C/C++开发

如何实现“InterpolatedVector”?

我有一个 std :: vector ,我需要插值它的值。例如只有一个中间值,并且给定一个向量填充 1/2/3/4 我要访问以下值 1 / 1.5 / 2 / 2.5 / 3 / 3.5 / 4 不需要存储这个中间值(简单的线性插值,我不必太频繁地读取),所以我写了这个简单的类: typedef std :: vec ..
发布时间:2016-10-25 16:16:34 C/C++开发

stl集合迭代器

我有一个stl设置与Cell类的对象 class Cell { public: // Ctor / Dtor Cell(size_t cellId = 0,int x = 0,int y = 0,size_t t = 0):m_cellId(cellId),m_x(x),m_y ,m_t(t),m_color(WHITE),m_pCellId(0),m_regNum(0){} ..
发布时间:2016-10-25 16:10:12 C/C++开发

迭代通过容器的最佳方式

这两种方式迭代容器/您喜欢哪一种方式和原因的优点/缺点是什么? for(MyClass :: iterator i = m.begin(),e = m.end(); i!= e; i ++) { // ... } b $ b 或 $ c> for(MyClass :: iterator i = m.begin(); i!= m.end(); i ++) { ..
发布时间:2016-10-25 14:27:14 C/C++开发

迭代通过容器的最佳方式

这两种方式迭代容器/您喜欢哪一种方式和原因的优点/缺点是什么? for(MyClass :: iterator i = m.begin(),e = m.end(); i!= e; i ++) { // ... } b $ b 或 $ c> for(MyClass :: iterator i = m.begin(); i!= m.end(); i ++) { ..
发布时间:2016-10-25 14:18:02 C/C++开发

返回一个“任何种类的输入迭代器”,而不是一个vector :: iterator或一个list :: iterator

假设我想在C ++中实现一个数据结构来存储定向图。由于STL容器,弧将被存储在节点中。我希望用户能够以类似STL的方式遍历一个节点的弧线。 我所遇到的问题是我不想在Node类(实际上是一个抽象基类)中公开哪个STL容器将在具体类中实际使用。因此我不想让我的方法返回std :: list :: iterator或std :: vector :: iterator ... 我试过这个: ..
发布时间:2016-10-25 14:16:13 C/C++开发

返回一个“任何种类的输入迭代器”,而不是一个vector :: iterator或一个list :: iterator

假设我想在C ++中实现一个数据结构来存储定向图。由于STL容器,弧将被存储在节点中。我希望用户能够以类似STL的方式遍历一个节点的弧线。 我所遇到的问题是我不想在Node类(实际上是一个抽象基类)中公开哪个STL容器将在具体类中实际使用。因此我不想让我的方法返回std :: list :: iterator或std :: vector :: iterator ... 我试过这个: ..
发布时间:2016-10-25 14:04:50 C/C++开发