草庐IT

const_iterators

全部标签

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++ - 比较两个map::iterators:为什么需要std::pair的拷贝构造函数?

下面非常简单的代码在C++98中编译和链接时不会出现警告,但在C++11模式下会出现难以理解的编译错误。#includestructA{A(A&);//m;returnm.begin()==m.end();//line9}-std=c++11的错误是,gccversion4.9.020140302(experimental)(GCC):ali@X230:~/tmp$~/gcc/install/bin/g++-std=c++11cctor.cppInfileincludedfrom/home/ali/gcc/install/include/c++/4.9.0/bits/stl_algob

c++ - 比较两个map::iterators:为什么需要std::pair的拷贝构造函数?

下面非常简单的代码在C++98中编译和链接时不会出现警告,但在C++11模式下会出现难以理解的编译错误。#includestructA{A(A&);//m;returnm.begin()==m.end();//line9}-std=c++11的错误是,gccversion4.9.020140302(experimental)(GCC):ali@X230:~/tmp$~/gcc/install/bin/g++-std=c++11cctor.cppInfileincludedfrom/home/ali/gcc/install/include/c++/4.9.0/bits/stl_algob

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

c++ - 如何编写可以采用 const 迭代器的 C++11 模板

回复thisquestion在CodeReview上,我正在考虑如何编写模板函数来指示所包含对象的const-ness。具体来说,考虑这个模板化函数#include#include#includetemplatetypenamestd::iterator_traits::value_typeaverage(Itbegin,Itend){typedeftypenamestd::iterator_traits::value_typereal;realsum=real();unsignedcount=0;for(;begin!=end;++begin,++count)sum+=*begin;

c++ - 如何编写可以采用 const 迭代器的 C++11 模板

回复thisquestion在CodeReview上,我正在考虑如何编写模板函数来指示所包含对象的const-ness。具体来说,考虑这个模板化函数#include#include#includetemplatetypenamestd::iterator_traits::value_typeaverage(Itbegin,Itend){typedeftypenamestd::iterator_traits::value_typereal;realsum=real();unsignedcount=0;for(;begin!=end;++begin,++count)sum+=*begin;

c++ - 带有 const 引用的 std::remove_const

为什么std::remove_const不能将constT&转换为T&?这个公认的相当人为的例子证明了我的问题:#includeintmain(){inta=42;std::remove_const::typeb(a);//Thisassertionfailsstatic_assert(!std::is_same::value,"Whydidremove_constnotremoveconst?");return0;}上面的情况很容易解决,所以对于上下文,想象一下:#includetemplatestructSelector{constexprstaticconstchar*value

c++ - 带有 const 引用的 std::remove_const

为什么std::remove_const不能将constT&转换为T&?这个公认的相当人为的例子证明了我的问题:#includeintmain(){inta=42;std::remove_const::typeb(a);//Thisassertionfailsstatic_assert(!std::is_same::value,"Whydidremove_constnotremoveconst?");return0;}上面的情况很容易解决,所以对于上下文,想象一下:#includetemplatestructSelector{constexprstaticconstchar*value

c++ - std::runtime_error::runtime_error(const std::string&) 如何满足 std::exception 对 throw() 的要求?

std::exception要求其构造函数是throw()。然而std::runtime_error接受一个std::string作为它的参数,这表明它在某处存储了一个std::string。因此,必须在某处进行分配或复制构造。对于std::string,这不是nothrow操作。那么runtime_error::runtime_error是如何满足throw()的呢?(对于上下文,我正在实现一个异常类型,并且想从调用站点存储一些std::strings,我想正确地做到这一点......) 最佳答案 (Here's在极简测试用例中同