草庐IT

array_size

全部标签

c++ - 错误 "An array may not have elements of this type"

由于这个奇怪的编译错误,我在编译我的程序时遇到了问题...这是代码的具体部分://theerroroccuresat"char_adr[][]"intheconstructorparametersAddresses(string_ime,string_egn,char*_adres,char_adr[][],intadrLen):Person(_ime,_egn,_adres){addressLength=0;for(;addressLength=5){break;}adr[addressLength]=_adr[addressLength];}} 最佳答案

c++ - 使用 size_t 值反向遍历 vector

我想以相反的方向遍历vector的值。如您所知,vector的大小是size_t。当我使用以下代码时:for(size_tr=m.size()-1;r>=0;r--){x[r]=f[r];for(size_tc=r+1;c我将超出vector的范围,因为在递减r=0后r将变为4294967295。我没有更改r的类型,因为在我的项目中,我将警告视为错误,所以它应该是size_t或者我应该转换它,这并不有趣。 最佳答案 如果您真的想使用size_t进行索引,则循环可以制定如下。for(size_tr=m.size();r>0;r--){

c++ - 使用 constexpr auto/char-array 变量观察到的不同行为

跟进这个问题Havingaconstexprstaticstringgivesalinkererror在问题中,这段代码无法编译:#includestructTest{staticconstexprchartext[]="Text";};intmain(){std::cout从评论来看,这段代码是可以编译的:#includestructTest{staticconstexprautotext="Text";};intmain(){std::cout我的问题是,为什么auto版本可以工作,而char版本的数组却不行?能否请您指出标准中允许使用第二个版本而不允许使用第一个版本的声明?我看了

c++ - 权威的 “correct”方法,用于针对size_t测试循环变量时避免有符号/无符号警告

下面的代码生成一个编译器警告:privatevoidtest(){bytebuffer[100];for(inti=0;iwarning:comparisonbetweensignedandunsignedintegerexpressions[-Wsign-compare]这是因为sizeof()返回一个size_t,它是无符号的。我已经看到了许多有关如何处理此问题的建议,但是没有一个建议有很多的支持,也没有一个有任何令人信服的逻辑,也没有任何支持一个方法明显“更好”的引用。最常见的建议似乎是:忽略警告关闭警告使用类型为size_t的循环变量使用带有技巧的size_t类型的循环变量来避

c++ - (void) sizeof (0[array]) 是什么意思?

我遇到了以下代码,它返回C样式数组的大小。templateintGetArraySize(Type(&array)[N]){(void)sizeof(0[array]);returnN;}模板部分似乎已经在thisquestion中解释过了。.但是,我仍然不明白sizeof行的用途是什么。有任何想法吗?有人建议这是为了避免未使用的变量警告,但可以使用更简单的#pragma,对吧?另外,这段代码在任何情况下都有效吗?没有任何限制吗? 最佳答案 我认为该行的目的是静默未使用的变量警告。更简单的方法是省略参数名称templateintGe

c++ - 解锁对 STL vector::size 安全性的访问

我在STLvector上有几个作者(线程)和一个读者。正常的写入和读取是互斥保护的,但我想避免我拥有的循环上的争用,我想知道vector::size是否足够安全,我想这取决于实现,但因为通常vector动态内存是用于存储项目存储大小的内存不应在重新分配期间失效。我不介意有误报,在size>0之后,我实际上会锁定并再次检查,因此如果在另一个线程写入时读取size()不会出现段错误,它对我来说应该足够安全。 最佳答案 我不知道并发读取和写入整数段错误的实现(尽管C++03标准不禁止这样做,我不知道POSIX是否禁止)。如果vector使

c++ - 标准转换 : Array-to-pointer conversion

这是来自ISO的要点:标准转换:数组到指针的转换:$4.2.1Anlvalueorrvalueoftype“arrayofNT”or“arrayofunknownboundofT”canbeconvertedtoanrvalueoftype“pointertoT.”Theresultisapointertothefirstelementofthearray.谁能解释一下,如果可能的话,用一个示例程序。我已经看过这些链接,但我无法理解:ArrayandRvalueIthinkImayhavecomeupwithanexampleofrvalueofarraytype

c++ - 嵌入式 C++ : Initialization of an array member of a struct within a class, 大小省略

您好,在此先感谢您对以下问题的任何帮助。编辑:我忘了补充一点,这是在无法访问STL功能的嵌入式系统上。我很抱歉遗漏了这条非常重要的信息。这是我第一次广泛使用C++进行编码,所以我忘了提及显而易见的事情。我回来补充这个事实,这个问题已经收到了一些回复。感谢大家这么快的回复!我正在尝试初始化结构的数组成员,该结构又是C++类的公共(public)成员。结构中省略了数组大小。这是一个例子://ClassA.hClassA{public:structStructA{StructBstructs[];};structStructB{//stuff};ClassA();//etc};//Class

在 std::array 中使用默认参数调用 C++ 函数?

现在我有一个C++函数voidF(std::arrayx){//...}我希望参数“x”可以有一个默认值,我该怎么做?如果不是函数参数,我可以简单地使用std::arrayx={1,2,3};但是对于函数参数,代码voidF(std::arrayx={1,2,3}){//...}会导致编译错误。我在MSVC2012中测试,遇到错误C2143、C2059、C2447。还有g++4.6.3中的错误有什么办法让它有默认值吗?谢谢。 最佳答案 您的解决方案应符合标准,但在某些编译器中未实现。它们中的大多数可以使用语法x={{1,2,3}}初

c++ - C++ 字符串中 "size"和 "capacity"之间的区别?

我有ThinkinginC++中的这个片段。#include#includeintmain(){stringbigNews("IsawElvisinaUFO.");cout我得到如下所示的输出:IsawElvisinaUFO.thoughtIIsawElvisinaUFO.Size=33Capacity=44thoughtIIsawElvisinaUFO.I'vebeenworkingtoohard.Size=60Capacity=88我能弄清楚为什么大小会增加,但我无法弄清楚容量是如何增加的?我所知道的是Capacity是我们可以在其中进行Pushback的字符串缓冲区,但是该空间是