草庐IT

const_iterators

全部标签

c++ - *non*-const 引用会延长临时人员的生命周期吗?

曾几何时,我认为这样的代码会失败:constMyClass&obj=MyClass();obj.DoSomething();因为MyClass对象将在其完整表达式结束时被销毁,留下obj作为悬空引用。但是,我(在这里)了解到这不是真的。该标准实际上有一个特殊规定,允许const引用使临时对象保持事件状态,直到所述引用本身被销毁。但是,需要强调的是,只有const引用具有这种能力。今天我在VS2012中运行了下面的代码作为实验。structFoo{Foo(){std::cout调用f()时的输出是:ctorHelloworlddtor所以我查看了C++11草案标准,但只发现了这个(第12

c++ - 如何将 const char* 转换为 char*

谁能告诉我如何将constchar*转换为char*?get_error_from_header(void*ptr,size_tsize,size_tnmemb,void*data){ErrorMsg*error=(ErrorMsg*)data;char*err=strstr((constchar*)ptr,"550");//errorcannotconvertconstchar**tochar*if(err){strncpy(error->data,(char*)ptr,LENGTH_ERROR_MESSAGE-1);error->data[LENGTH_ERROR_MESSAGE-

c++ - 如何将 const char* 转换为 char*

谁能告诉我如何将constchar*转换为char*?get_error_from_header(void*ptr,size_tsize,size_tnmemb,void*data){ErrorMsg*error=(ErrorMsg*)data;char*err=strstr((constchar*)ptr,"550");//errorcannotconvertconstchar**tochar*if(err){strncpy(error->data,(char*)ptr,LENGTH_ERROR_MESSAGE-1);error->data[LENGTH_ERROR_MESSAGE-

c++ - 在 C++ 中更改 const 变量的值

这个问题在这里已经有了答案:WeirdBehaviourwithconst_cast[duplicate](2个回答)关闭6年前。我正在尝试更改定义为intconst的变量的值,如下所示。constintw=10;int*wp=const_cast(&w);*wp=20;w的值没有改变,即使在赋值之后也是10,尽管它表明w和wp都指向同一个内存位置。但是如果在声明时定义如下,我可以更改w的值inti=10;constintw=i;如果我更改i的声明以使其像in一样constconstinti=10;w的值不变。在第一种情况下,为什么w的值没有改变,即使w和wp指向同一个内存位置[这是我

c++ - 在 C++ 中更改 const 变量的值

这个问题在这里已经有了答案:WeirdBehaviourwithconst_cast[duplicate](2个回答)关闭6年前。我正在尝试更改定义为intconst的变量的值,如下所示。constintw=10;int*wp=const_cast(&w);*wp=20;w的值没有改变,即使在赋值之后也是10,尽管它表明w和wp都指向同一个内存位置。但是如果在声明时定义如下,我可以更改w的值inti=10;constintw=i;如果我更改i的声明以使其像in一样constconstinti=10;w的值不变。在第一种情况下,为什么w的值没有改变,即使w和wp指向同一个内存位置[这是我

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::function 中的 const 和 & 被忽略了吗?

为什么这段代码会编译?std::functionf=[](inta){};int和constint&不是不同的类型吗? 最佳答案 它们是不同的,但没关系,因为constint&参数可以传递给int参数,这就是所需要的。 关于c++-std::function中的const和&被忽略了吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/45387506/

c++ - std::function 中的 const 和 & 被忽略了吗?

为什么这段代码会编译?std::functionf=[](inta){};int和constint&不是不同的类型吗? 最佳答案 它们是不同的,但没关系,因为constint&参数可以传递给int参数,这就是所需要的。 关于c++-std::function中的const和&被忽略了吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/45387506/

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:‘