草庐IT

ITERATOR

全部标签

c++ - 模板函数中需要什么类型的迭代器?

我正在制作自己的基于计数排序的sort()算法。它对范围有限的正数进行排序。到目前为止,它适用于std::string和std::vector。原型(prototype)如下:templatevoidsortIntegers(ForwardIteratorstart,ForwardIteratorend)我的算法使用*iter=、++iter和copy=iter。来自http://www.cplusplus.com/reference/iterator/我确定我需要一个ForwardIterator或更好的。这是确定我的算法所需的最通用迭代器类型的正确方法吗?我不确定我是否应该尝试变得

c++ - std::result_of 应用于 const 重载方法

如果我给typedefstd::vectorv;然后下面可以用来捕获常量迭代器的类型(另一种方法是使用v::const_iterator,但这取决于const_iterator成员类型在类中明确定义。typedeftypenamestd::result_of::typeconst_iterator;确实,我们可以检查上面的内容是否如我们所愿。static_assert(std::is_same::value);但是,我发现下面的编译器失败。typedeftypenamestd::result_of::typeiterator;编译器提示该方法被重载(通过const修饰符)并且无法明确解

C++ 在 ‘value_type’ 中没有名为 ‘struct std::iterator_traits<int>' 的类型

你好。我正在尝试运行以下代码(仅用于培训目的):#include#includetemplate>classkont>typenamestd::iterator_traits::value_typefoo_test(typenamekont::iteratorb){return*b;}templatetypenamestd::iterator_traits::value_typeminimum(Iterb,Itere){Iterm=b;/*CODE*/return*m;}intmain(void){std::listx;x.push_back(10);x.push_back(100);

c++ - 你能为 ContiguousIterator 写一个概念吗?

我知道wordsspecification中有ContiguousIterator的概念感觉,但我想知道它是否可以使用C++20/C++17ConceptsTS语法编写。我的问题是这不像RandomAccessIteratorContiguousIterator不仅需要像it+123这样的操作才能工作,而且还取决于该操作的运行时结果。 最佳答案 不,你不能,如果没有traits类或其他助手,类型选择连续。 关于c++-你能为ContiguousIterator写一个概念吗?,我们在Sta

c++ - `reverse_iterator`的限制原因

关于thecppreferencepageofreverse_iterator我发现以下评论std::reverse_iteratordoesnotworkwithiteratorsthatreturnareferencetoamemberobject(so-called"stashingiterators").Anexampleofstashingiteratorisstd::filesystem::path::iterator.这种说法正确吗?而且,如果是,那是为什么?对我来说,限制是没有意义的,因为我假设反向迭代器基本上交换了operator++和operator--(并存储底层

c++ - C++ 中纯虚拟容器接口(interface)的迭代器

我有一个容器的纯虚拟接口(interface),它或多或少是这样的:classIContainer{public:virtual~IContainer()=default;virtualElement&operator[](size_tindex)=0;virtualconstElement&operator[](size_tindex)const=0;virtualsize_tsize()const=0;};我想使用rangefor循环,所以我需要定义begin()和end()。为此,我还需要定义迭代器类型。应该不是特别难,但是在我开始编写已经存在的东西之前,我想知道STL或Boos

c++ - 反向迭代器未按预期工作

我在std::vector上使用反向迭代器并根据以下链接:http://www.cplusplus.com/reference/stl/vector/rbegin/myVector.rbegin()是vector的最后一个元素。就我而言,我实际上得到了pasttheendrbegin()上的迭代器和来自rend()的拳头元素.我会期待rend()给我pasttheend迭代器和rbegin()给我容器中的最后一个元素。我理解错了吗?以下是我的代码,没什么特别的。我在赋值之后放置了一个断点,上面是我在调试器中得到的结果(VecDebugCubes是std::vector的类型定义)Vec

C++ 遍历模板 Map

当我有一个模板类,其中包含模板映射和const_iterator由typedef声明为以下代码时,我如何遍历映射外部的元素类,feinmain将它们打印在输出上?templateclasstemplate_map{private:typedeftypenamestd::mapTMap;TMapmy_map;public:typedeftypenameTMap::const_iteratorconst_iterator;...};intmain(){template_MapMap1//supposethatcontainselements?}更新:typedef迭代器可以在类外使用吗?如

c++ - cl::vector 与 std::vector:不同的迭代器行为

编辑:按照PlasmaHH的建议添加了带有内存位置的调试输出。我不明白cl::vector在OpenCL的C++绑定(bind)中的不同行为。考虑以下代码:标题Top.hpp:classTop{public:voidsetBool(boolb);boolgetBool();private:boolstatus;};来源Top.cpp:#include"Top.hpp"voidTop::setBool(boolb){std::cout使用上面的:#define__NO_STD_VECTOR#include#include"CL/cl.hpp"#include"Top.hpp"usingn

c++ - 使用 LLVM JIT 代码对程序进行编码以调用 C++ 代码

我的项目有一个C++库,我想允许用户通过某种编程语言使用它来进行JIT调用所述库中的函数。为了简单起见,假设库有如下类:classitem{public:item();item(int);~item();//...};classitem_iterator{public:virtual~item_iterator();virtualboolnext(item*result)=0;};classsingleton_iterator:publicitem_iterator{public:singleton_iterator(itemconst&i);//...};我知道LLVM对C++一无所