草庐IT

END_ARRAY

全部标签

c++ - 我可以将 std::array 转换为切片吗?或者还有什么我可以用的吗?

这是未定义的行为吗?std::arrayx={3,5,1,2,3};std::array&y=*reinterpret_cast*>(&x[1]);for(inti=0;i!=3;i++){std::cout也许是的,但我真的觉得应该有一种安全的方式来切片std::arrays。编辑按照Radek的建议:templatestd::array&array_slice(std::array&x){static_assert(start*>(&x[start]);}编辑:好吧,我决定我对std::array不满意并且会转向其他东西,有什么想法吗? 最佳答案

c++ - 删除时 std::list end() 迭代器位置是否改变?

在下面的循环中,我使用了一个预先计算好的结束迭代器:std::list::iteratorend=MyList.end();for(std::list::iteratorit=MyList.begin();it!=end;)it=MyList.erase(it);当删除std::list中的元素时,MyList.end()是否可以更改其值以便end!=MyList.end()不再存在? 最佳答案 没有。n337623.3.5.4iteratorerase(const_iteratorposition);iteratorerase(c

c++ - 什么是 string array[] = "";意思是为什么它有效?

stringarray[]="";如何将constchar*分配给数组?是否与以下内容相同:stringarray[]={""};??这对我来说很有意义。然而,这仍然不起作用intarray[]=5;那么它们对int数组不起作用有什么区别呢? 最佳答案 这是错误的代码;接受它是你的编译器(可能是gcc/g++?)中的错误。clang给出以下错误(link):a.cpp:5:17:error:arrayinitializermustbeaninitializerliststd::stringarray[]="";^1errorgene

c++ - 定义为 "_end[LEN]"的数组在 C/C++ 中导致段错误

这个问题在这里已经有了答案:WhataretherulesaboutusinganunderscoreinaC++identifier?(5个答案)关闭7年前。我试图在C/C++中定义一个名为_end的全局数组,大小约为1000,但即使我只是简单地迭代它,我也会遇到段错误。名称“_end”在导致此类问题的C/C++中是否非常特殊?或者这可能是一个非常严重的错误......(代码附在下面,它在g++4.3.2、4.5.2、4.9.2等中中断)#includeusingnamespacestd;int_end[1111];intmain(){for(inti=0;i您可以在https://

c++ - map 、集合等的 array_view 替代方案

假设我有一些类层次结构,其中有几个virtual返回容器引用的函数:#include#include#include#include#includeclassInterface{public:virtualconststd::vector&getArray()const=0;virtualconststd::set&getSet()const=0;virtualconststd::map&getMap()const=0;};classSubclassA:publicInterface{public:conststd::vector&getArray()constoverride{ret

c++ - C++ 代码 `x.erase(std::remove(x.begin(), x.end(), ' '), x.end())` 是如何工作的?

问题是我通常会使用for循环来处理这种事情,但这种方法似乎更有效率。cplusplus的文档对我来说有点难以理解。std::stringno_space(std::stringx){x.erase(std::remove(x.begin(),x.end(),''),x.end());returnx;} 最佳答案 函数std::remove(x.begin,x.end),'')将元素移动到字符串的末尾,函数std::erase实际上删除了被移动到字符串末尾的元素。您还可以在文档中阅读更多相关信息enterlinkdescription

c++ - c++11 严格别名规则是否允许通过 char *、char(&)[N]、甚至 std::array<char, N>& 使用 -fstrict-aliasing -Wstrict-aliasing=2 访问 uint64_t?

根据this关于C++11/14严格别名规则的stackoverflow回答:Ifaprogramattemptstoaccessthestoredvalueofanobjectthroughaglvalueofotherthanoneofthefollowingtypesthebehaviorisundefined:thedynamictypeoftheobject,acv-qualifiedversionofthedynamictypeoftheobject,atypesimilar(asdefinedin4.4)tothedynamictypeoftheobject,atypet

C++ 标准 : end of lifetime

在basic.lifeC++标准的一部分,可以找到以下内容(强调我的):ThelifetimeofanobjectooftypeTendswhen:ifTisaclasstypewithanon-trivialdestructor([class.dtor]),thedestructorcallstarts,orthestoragewhichtheobjectoccupiesisreleased,orisreusedbyanobjectthatisnotnestedwithino([intro.object]).我正在尝试查找对象o的存储示例,该对象被嵌套在o中的对象重用(相反标准所说的

c++ - 当类没有 constexpr 构造函数时简化冗余 std::array 初始化

我有以下代码的更复杂版本:#include#includeusingnamespacestd;classDummy{public:Dummy(constdoublea,constdoublef){//Somecomplexcalculations}};constexprdoublevalues[]{0.1,0.2,0.3,0.4};constexprautoN=sizeof(values)/sizeof(values[0]);staticconstarraydummies{Dummy(10*values[0],M_PI*0),Dummy(10*values[1],M_PI*1),Dum

c++ - 类模板中 std::array 的大小取决于模板参数

我有一个下面的类模板templateconstexprintarraySize(){returnarraySize()+N;}templateconstexprintarraySize(){return0;}templateclassMyClass{public:std::array()>arr;};intmain(){MyClasscls;std::cout一切正常,但我想要calculateArraySize()作为成员函数。我尝试了以下方法:templateclassMyClass{public:staticconstexprintarraySize();std::array::