草庐IT

dynamic-arrays

全部标签

c++ - 在使用它的类的构造函数中初始化 std::array 的大小

是否可以使用std::array作为类的私有(private)属性,但在类的构造函数中初始化其大小?classRouter{std::arrayports;//Idontknowhowmuchportsdowillthishavepublic:Switch(intnumberOfPortsOnRouter){ports=std::arrayports;//nowIknowithas"numberOfPortsOnRouter"ports,buthowtotellthe"ports"variable?}}我可能会使用一个指针,但没有它也能做到吗? 最佳答案

c++ - 如何实现 array::max_size()?

我正在构建自己的array用于娱乐和教育的类模板。C++0x标准草案规定了一个成员函数max_size()对于所有容器为distance(begin(),end())“为了尽可能大的容器”。如何为数组实现这个成员函数?我只是返回std::numeric_limits::max()吗?,还是结果应该取决于元素类型?嗯,都是std::array来自当前的g++和boost::array返回n来自max_size():#include#include#includeintmain(){std::arrayfoo;std::coutbar;std::cout 最佳答

c++ - "dynamic_cast"之后的 NULL 指针实际上可以取消引用吗?

以下代码编译正确并得到神秘的输出:specialInvestmentfunction00000000(环境:C++VS2010)#include#includeusingnamespacestd;classSecurity{public:virtual~Security(){}};classStock:publicSecurity{};classInvestment:publicSecurity{public:voidspecial(){cout(p)->special();cout(p)怎么可能呢?取消引用NULL指针并获得“正确”输出而不是崩溃?是VS2010的特殊“特性”吗?现在

c++ - 为什么我的指针输出一个字符串而不是 C++ 中的内存地址?

这个问题在这里已经有了答案:cout(6个答案)关闭3年前。我正在研究一个使用指针的字符串类,但我只是难以理解我的print是如何工作的。功能在这里工作。具体来说,为什么cout输出字符串而不是它指向的动态数组的内存地址?我的理解是变量pString是一个指针。classMyString{public:MyString(constchar*inString);voidprint();private:char*pString;};MyString::MyString(constchar*inString){pString=newchar[strlen(inString)+1];strcp

c++ - char * (*arr)[2 ] 和 char **array[2] 有何不同?

char*(*arr)[2]和char**array[2]有何不同??如果我使用函数传递char*strings[2]那么如何从问题第一部分提到的两种方式访问​​元素?还请告诉其他访问指针数组元素的方法。谢谢。 最佳答案 CDecl报告:char*(*arr)[2]declarearraspointertoarray2ofpointertochar和char**arr[2]declarearrasarray2ofpointertopointertochar只是[]数组声明符的优先级高于*指针限定符,所以括号改变了含义。

c++ - O* p = 新的 O[5]; p 指向什么?

到数组的第一个O? 最佳答案 是的。 关于c++-O*p=新的O[5];p指向什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3257584/

c++ - std::array 的大小是否由标准定义

在C++11中std::array被定义为具有不比数组差的连续存储和性能,但我无法确定标准的各种要求是否暗示std::array具有与普通数组相同的大小和内存布局。那你能指望sizeof(std::array)==sizeof(int)*N吗?还是具体实现?特别是,这是否保证按照您期望的方式工作:std::vector>x(M);typedef(*ArrayPointer)[N];ArrayPointery=(ArrayPointer)&x[0][0];//useylikenormalmultidimensionalarray它适用于我试过的两个编译器(GNU和Intel)。此外,我能

c# - 为什么 Array.Length 是一个 int,而不是一个 uint

这个问题在这里已经有了答案:Whydoes.NETuseintinsteadofuintincertainclasses?(7个答案)关闭9年前。为什么Array.Length是int,而不是uint。这让我很困扰(有点),因为长度值永远不会是负数。这也迫使我在自己的类中使用int作为长度属性,因为当你指定一个int值,这需要显式转换...所以最终的问题是:unsignedint(uint)有什么用吗?甚至微软似乎也不使用它们。

c++ - std::array 的内联初始化有什么问题?

考虑以下声明:#includestructX{//std::arrayarr={false,false,false};boolbrr[3]={false,false,false};};按原样,它可以通过g++5.2正常编译。但是如果我取消对std::array的注释,我会得到一个错误:test.cpp:5:46:error:arraymustbeinitializedwithabrace-enclosedinitializerstd::arrayarr={false,false,false};^test.cpp:5:46:error:toomanyinitializersfor‘std

c++ - 为什么 "dynamic exception"保证会导致开销?

在C++11中,这已被弃用:voidfoo()throw();并替换为voidfoo()noexcept;在thisarticle据解释,这样做的原因(除其他外,归结为同一件事)是C++exceptionspecificationsarecheckedatruntimeratherthanatcompiletime,sotheyoffernoprogrammerguaranteesthatallexceptionshavebeenhandled.虽然这对我来说确实有意义,但我不明白为什么首先要动态检查throw(),或者为什么noexcept不提供异常保证除了调用std::termin