草庐IT

Iterator

全部标签

c++ - 对于具有线性存储的容器,可以使用原始指针而不是具有 STL 算法的迭代器吗?

我有一个自定义vector容器,它在内部存储项目一个线性数组。昨晚,我试图为我的类实现自定义迭代器,以便能够将它们与STL算法一起使用。我取得了一些成功,您可以在这里看到:Liveexamplewithcustomiterators这样做时,我发现我只能将原始指针传递给STL算法,它们似乎工作正常。这是没有任何迭代器的示例:#include#include#include#includetemplateclassmy_array{T*data_;std::size_tsize_;public:my_array():data_(NULL),size_(0){}my_array(std::

c++ - 对于具有线性存储的容器,可以使用原始指针而不是具有 STL 算法的迭代器吗?

我有一个自定义vector容器,它在内部存储项目一个线性数组。昨晚,我试图为我的类实现自定义迭代器,以便能够将它们与STL算法一起使用。我取得了一些成功,您可以在这里看到:Liveexamplewithcustomiterators这样做时,我发现我只能将原始指针传递给STL算法,它们似乎工作正常。这是没有任何迭代器的示例:#include#include#include#includetemplateclassmy_array{T*data_;std::size_tsize_;public:my_array():data_(NULL),size_(0){}my_array(std::

c++ - STL 算法 : Why no additional interface for containers (additional to iterator pairs)?

我想知道为什么STL不会重载它们的算法函数,这样我就可以通过简单地提供一个容器而不是采用更冗长的方式来传递begin+end迭代器来调用它们。我当然理解为什么我们还想使用迭代器对来处理容器/数组的子序列,但是,几乎所有对这些方法的调用都使用了整个容器:std::for_each(myVector.begin(),myVector.end(),doSomething);我会发现只写更方便、可读和可维护std::for_each(myVector,doSomething);STL不提供这些重载是否有原因?[编辑:我的意思不是用这个受限的接口(interface)替换接口(interface

c++ - STL 算法 : Why no additional interface for containers (additional to iterator pairs)?

我想知道为什么STL不会重载它们的算法函数,这样我就可以通过简单地提供一个容器而不是采用更冗长的方式来传递begin+end迭代器来调用它们。我当然理解为什么我们还想使用迭代器对来处理容器/数组的子序列,但是,几乎所有对这些方法的调用都使用了整个容器:std::for_each(myVector.begin(),myVector.end(),doSomething);我会发现只写更方便、可读和可维护std::for_each(myVector,doSomething);STL不提供这些重载是否有原因?[编辑:我的意思不是用这个受限的接口(interface)替换接口(interface

c++ - 'std::vector<T>::iterator it ;' doesn' t 编译

我有这个功能:templatevoidInventory::insertItem(std::vector&v,constT&x){std::vector::iteratorit;//doesn'tcompilefor(it=v.begin();it而g++给出了这些错误:src/Item.hpp:Inmemberfunction‘voidyarl::item::Inventory::insertItem(std::vector>&,constT&)’:src/Item.hpp:186:error:expected‘;’before‘it’src/Item.hpp:187:error:‘

c++ - 'std::vector<T>::iterator it ;' doesn' t 编译

我有这个功能:templatevoidInventory::insertItem(std::vector&v,constT&x){std::vector::iteratorit;//doesn'tcompilefor(it=v.begin();it而g++给出了这些错误:src/Item.hpp:Inmemberfunction‘voidyarl::item::Inventory::insertItem(std::vector>&,constT&)’:src/Item.hpp:186:error:expected‘;’before‘it’src/Item.hpp:187:error:‘

c++ - 我们可以在没有 'advance' 函数的情况下增加迭代器多个位置吗?

我知道我们可以使用advance()函数来增加迭代器。我们还使用iterator++将迭代器增加一位。为什么我们不能使用it+=2?intmain(){listl1{1,2,3,5,6};listl2{2,6,8};autoit=l1.begin();advance(it,2);//worksit++;//works//it+=2;//notworkl2.splice(l2.begin(),l1,it);for(inta:l2)cout你可以运行上面的代码here. 最佳答案 operator+=仅受RandomAccessIter

c++ - 我们可以在没有 'advance' 函数的情况下增加迭代器多个位置吗?

我知道我们可以使用advance()函数来增加迭代器。我们还使用iterator++将迭代器增加一位。为什么我们不能使用it+=2?intmain(){listl1{1,2,3,5,6};listl2{2,6,8};autoit=l1.begin();advance(it,2);//worksit++;//works//it+=2;//notworkl2.splice(l2.begin(),l1,it);for(inta:l2)cout你可以运行上面的代码here. 最佳答案 operator+=仅受RandomAccessIter

c++ - <iterator> 引入的 sys/sysmacros.h 中定义的主要和次要宏

我正在编写一个具有类似矩阵结构的类,并且我希望有一个名为minor的成员函数与矩阵运算相同。这会触发一些错误。我系统上的最小测试用例:#includevoidminor(introw,intcol);编译时,clang提供以下错误:$clang++-Weverything-std=c++11test.cpptest.cpp:2:21:error:toomanyargumentsprovidedtofunction-likemacroinvocationvoidminor(introw,intcol);^/usr/include/x86_64-linux-gnu/sys/sysmacro

c++ - <iterator> 引入的 sys/sysmacros.h 中定义的主要和次要宏

我正在编写一个具有类似矩阵结构的类,并且我希望有一个名为minor的成员函数与矩阵运算相同。这会触发一些错误。我系统上的最小测试用例:#includevoidminor(introw,intcol);编译时,clang提供以下错误:$clang++-Weverything-std=c++11test.cpptest.cpp:2:21:error:toomanyargumentsprovidedtofunction-likemacroinvocationvoidminor(introw,intcol);^/usr/include/x86_64-linux-gnu/sys/sysmacro