草庐IT

const-iterator

全部标签

c++ - Visual Studio 2015 : is a set of const pointers allowed?

我们将很快升级到VS2015,我在重大更改列表中找到了这个:constelementsTheC++standardhasalwaysforbiddencontainersofconstelements(suchasvectororset).VisualC++2013andearlieracceptedsuchcontainers.Inthecurrentversion,suchcontainersfailtocompile.source我想知道是否有人知道这是否也适用于集合。我知道映射仍然可以包含const指针作为键,因为它们无论如何都是const。一个例子:std::set我还能这样

c++ - 函数后的 const 如何优化程序?

我见过一些这样的方法:voidSomeClass::someMethod()const;这个const声明有什么作用,它如何帮助优化程序?编辑我看到这个问题的第一部分之前已经问过......但是,它仍然没有回答第二部分:这将如何优化程序? 最佳答案 如果编译器知道类实例的字段没有在const成员函数调用中被修改,它就不必重新加载它在const函数调用之前可能保存在寄存器中的任何字段。这有点像discussiononconst_cast中的C++常见问题解答。. 关于c++-函数后的con

c++ - 函数后的 const 如何优化程序?

我见过一些这样的方法:voidSomeClass::someMethod()const;这个const声明有什么作用,它如何帮助优化程序?编辑我看到这个问题的第一部分之前已经问过......但是,它仍然没有回答第二部分:这将如何优化程序? 最佳答案 如果编译器知道类实例的字段没有在const成员函数调用中被修改,它就不必重新加载它在const函数调用之前可能保存在寄存器中的任何字段。这有点像discussiononconst_cast中的C++常见问题解答。. 关于c++-函数后的con

c++ - 在 C++ 中,堆分配的对象可以是 const 吗?

在C++中,堆栈分配的对象可以声明为const:constClassobject;之后尝试在此类对象上调用非常量方法是未定义的行为:const_cast(&object)->NonConstMethod();//UB堆分配的对象可以是const并产生相同的后果吗?我的意思是有可能出现以下情况:constClass*object=newClass();const_cast(object)->NonConstMethod();//canthisbeUB?也是未定义的行为吗? 最佳答案 是的。构造和销毁const堆对象是合法的。与其他co

c++ - 在 C++ 中,堆分配的对象可以是 const 吗?

在C++中,堆栈分配的对象可以声明为const:constClassobject;之后尝试在此类对象上调用非常量方法是未定义的行为:const_cast(&object)->NonConstMethod();//UB堆分配的对象可以是const并产生相同的后果吗?我的意思是有可能出现以下情况:constClass*object=newClass();const_cast(object)->NonConstMethod();//canthisbeUB?也是未定义的行为吗? 最佳答案 是的。构造和销毁const堆对象是合法的。与其他co

c++ boost::filesystem undefined reference to `boost::filesystem3::path::root_name() const'

在尝试编译利用boost::filesystem库的代码时,我一直遇到错误。我不明白我得到的任何编译器输出。这是我从http://www.highscore.de/cpp/boost/dateisystem.html#dateisystem_pfadangaben复制的代码:#include#includeintmain(){boost::filesystem::pathp("C:\\Windows\\System");std::cout我有Ubuntu11.10,我已经安装了libbost-dev和g++。这是终端的样子:sam@sam-MT6707:~/Dokumente/Prog

c++ boost::filesystem undefined reference to `boost::filesystem3::path::root_name() const'

在尝试编译利用boost::filesystem库的代码时,我一直遇到错误。我不明白我得到的任何编译器输出。这是我从http://www.highscore.de/cpp/boost/dateisystem.html#dateisystem_pfadangaben复制的代码:#include#includeintmain(){boost::filesystem::pathp("C:\\Windows\\System");std::cout我有Ubuntu11.10,我已经安装了libbost-dev和g++。这是终端的样子:sam@sam-MT6707:~/Dokumente/Prog

c++ - 在 c++ 中,为什么编译器在 const 也可以工作时选择非常量函数?

这个问题在这里已经有了答案:Callingaconstfunctionratherthanitsnon-constversion(4个回答)关闭4年前。例如,假设我有一个类(class):classFoo{public:std::string&Name(){m_maybe_modified=true;returnm_name;}conststd::string&Name()const{returnm_name;}protected:std::stringm_name;boolm_maybe_modified;};在代码的其他地方,我有这样的东西:Foo*a;//Dostuff...st

c++ - 在 c++ 中,为什么编译器在 const 也可以工作时选择非常量函数?

这个问题在这里已经有了答案:Callingaconstfunctionratherthanitsnon-constversion(4个回答)关闭4年前。例如,假设我有一个类(class):classFoo{public:std::string&Name(){m_maybe_modified=true;returnm_name;}conststd::string&Name()const{returnm_name;}protected:std::stringm_name;boolm_maybe_modified;};在代码的其他地方,我有这样的东西:Foo*a;//Dostuff...st

c++ - 调用 erase() 后 std::map::iterator 出现问题

//erasingfrommap#include#includeusingnamespacestd;intmain(){mapmymap;map::iteratorit(mymap.begin());//insertsomevalues:mymap['a']=10;mymap['b']=20;mymap['c']=30;mymap['d']=40;mymap['e']=50;mymap['f']=60;it=mymap.find('a');mymap.erase(it);//erasingbyiterator//showcontent:for(;it!=mymap.end();it++