标签: static-array

以编译方式在C++中编译时创建静态数组

可以在编译时定义静态数组,如下所示:

const std::size_t size = 5;    
unsigned int list[size] = { 1, 2, 3, 4, 5 };
Run Code Online (Sandbox Code Playgroud)

问题1 - 是否可以通过使用各种元编程技术在编译时"以编程方式"分配这些值?

问题2 - 假设数组中的所有值都是相同的barr,是否可以在编译时以编程方式选择性地分配值?

例如:

const std::size_t size = 7;        
unsigned int list[size] = { 0, 0, 2, 3, 0, 0, 0 };
Run Code Online (Sandbox Code Playgroud)
  1. 欢迎使用C++ 0x的解决方案
  2. 阵列可能非常大,几百个元素长
  3. 现在的数组只包含POD类型
  4. 还可以假设,以静态编译时兼容的方式预先知道阵列的大小.
  5. 解决方案必须是C++ (没有脚本,没有宏,没有pp或基于代码生成器的解决方案)

更新: Georg Fritzsche的解决方案非常棒,需要一些工作才能在msvc和intel编译器上进行编译,但这仍然是解决问题的一种非常有趣的方法.

c++ metaprogramming static-array

63
推荐指数
3
解决办法
3万
查看次数

char和char之间的区别[1]

在C++中,使用char和char [1]之间有什么区别(如果有的话).

例子:

struct SomeStruct
{
   char x;
   char y[1];
};
Run Code Online (Sandbox Code Playgroud)

对于unsigned char,原因如下吗?

c++ arrays char static-array

55
推荐指数
2
解决办法
8568
查看次数

如何在没有GC分配的情况下初始化D中的静态数组?

在D中,所有数组文字都是动态数组,因此由GC分配.

即便在这个简单的例子中:

int[3] a = [10, 20, 30];
Run Code Online (Sandbox Code Playgroud)

数组是堆分配的,然后复制到a.

如何在没有堆分配的情况下初始化静态数组?

你可以手动完成:

int[3] a = void;
a[0] = 10;
a[1] = 20;
a[2] = 30;
Run Code Online (Sandbox Code Playgroud)

但这充其量是乏味的.

有没有更好的办法?

arrays performance memory-management d static-array

10
推荐指数
1
解决办法
527
查看次数

如何从字符串数组中提取name属性?

嗨,我建立了一个测验应用程序.我有以下(values /)question.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="question">
<item name="correct">A</item>
<item name="wrong">B</item>
<item name="wrong">C</item>
<item name="wrong">D</item>
</string-array>
</resources>
Run Code Online (Sandbox Code Playgroud)

我想问一个有四个可能答案的问题,但是当我用Java检索我的答案时......我不知道哪个答案是正确的.所以我决定在item标签中使用name属性来传递'correct'或'wrong'答案的值.反正是否有名称和标签值?

因为当我使用String [] test = res.getStringArray(R.array.question); 我只能得到数组中每个项目的值.

或者因为这是我第一次使用Android.有没有其他合适的方法来做到这一点?

谢谢

resources android attributes static-array

10
推荐指数
1
解决办法
1万
查看次数

用未指定大小定义的静态数组,空括号?

对于下面的C++代码片段:

class Foo {
    int a[]; // no error
};

int a[];     // error: storage size of 'a' isn't known

void bar() {
    int a[]; // error: storage size of 'a' isn't known
}
Run Code Online (Sandbox Code Playgroud)

为什么成员变量也不会导致错误?这个成员变量的含义是什么?

我通过CodeBlocks 8.02使用gcc版本3.4.5(mingw-vista special).

在Visual Studio Express 2008 - Microsoft(R)C/C++ Optimizing Compiler 15.00.30729.01 for 80x86上,我收到以下消息:

class Foo {
    int a[]; // warning C4200: nonstandard extension used : zero-sized array in struct/union - Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
};

int …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction class static-array

9
推荐指数
2
解决办法
2万
查看次数

Objective-C静态内联NSString数组

嗨:)我正在尝试创建NSStrings的静态C阵列.

这是我试过的:

static NSString** polygonNames = {@"Radical Isotope", @"Point", @"Line", @"Triangle", @"Square", @"Pentagon", @"Hextagon", @"Heptagon", @"Octagon", @"Nonagon", @"Decagon", @"Hendecagon", @"Dodecagon",  @"Tridecagon",  @"Tetradecagon",  @"Pentadecagon",  @"Hexadecagon",  @"Heptadecagon", @"Octadecagon", @"Enneadecagon"};
Run Code Online (Sandbox Code Playgroud)

没有编译器错误,但我收到41个警告,所有这些都是以下三个中的一个:

"warning: initialization from incompatible pointer type"
"warning: excess elements in scalar initializer"
"warning: (near initialization for 'polygonNames')"
Run Code Online (Sandbox Code Playgroud)

这让我相信当我使用这个课程时,我会遇到大量的信号或其他一些内存访问错误......

初始化NSStrings静态数组的正确方法是什么(最好是内联,我想使用C数组,而不是NSArrays)?

inline objective-c init static-array

9
推荐指数
1
解决办法
7876
查看次数

我们可以创建一个大小为执行时常量的静态数组吗?

我们都知道静态数组的基本规则:

int size = 20;
char myArray[size];
Run Code Online (Sandbox Code Playgroud)

不合法.和.

const int size = 20;
char myArray[size];
Run Code Online (Sandbox Code Playgroud)

没关系

但是,这个怎么样.

int f(const int size)
{
    char myArr[size];
}

void main()
{
   f(2);
   f(1024);
}
Run Code Online (Sandbox Code Playgroud)

MSVC说它是一个错误,gcc似乎编译并执行它很好.

显然,它不便携,但应该被接受吗?

在那种情况下哪个编译器做对了?

此外,如果编译器允许它,是否应该通过良好的编程标准/实践进行授权?

编辑:我的想法是我想要速度的堆栈分配,但我不知道在编译时数组的大小.我知道还有其他一些解决方案,堆栈分配可能不是一个有意义的优化,但我认为这是一个有趣的用法.

c++ coding-style static-array

6
推荐指数
1
解决办法
1180
查看次数

静态数组类变量"多重定义"C++

我正在编写一些代码,我需要一个类变量,它是一个静态int数组.我明白我可以在头文件中用这样的东西做这个,啊:

#ifndef A_H_
#define A_H_

class A
{
public:
  static const int a[];
};

const int A::a[] = {1,2};

#endif
Run Code Online (Sandbox Code Playgroud)

如果我将此标题只包含在另一个文件中,如下所示,main.cpp:

#include "A.h"

#include <iostream>
using namespace std;

int main()
{

  A myA;  
  cout << "0: " << myA.a[0] << endl;
  cout << "1: " << myA.a[1] << endl;
}
Run Code Online (Sandbox Code Playgroud)

但是假设我需要我的A类有点复杂,我想要一个A.cpp文件.我将保持我的main.cpp文件相同,但然后更改如下(我刚刚添加了一个函数,printA):

#ifndef A_H_
#define A_H_

class A
{
public:
  void printA() const;
  static const int a[];
};

const int A::a[] = {1,2};

#endif
Run Code Online (Sandbox Code Playgroud)

然后在文件A.cpp中:

#include "A.h"

#include <iostream>
using namespace …
Run Code Online (Sandbox Code Playgroud)

c++ static-members multiple-definition-error static-array

6
推荐指数
2
解决办法
6404
查看次数

“静态数组的动态数组”

如何在 C 中指定静态数组的动态数组?
我想制作一个包含两个静态数组动态数组的结构。

struct indexed_face_set {
    double * [3] vertices;
    int * [3] faces;
};
Run Code Online (Sandbox Code Playgroud)

这应该包含一个动态的顶点列表,每个是 3 个双精度,以及一个动态的面列表,每个都是 3 个整数。

c struct types static-array

5
推荐指数
1
解决办法
3013
查看次数

用C计算数组中元素的数量

在将数组传递给函数后,如何获取C中整数数组中存在的元素数?以下代码不起作用.

size=sizeof(array)/sizeof(array[0]);
Run Code Online (Sandbox Code Playgroud)

c arrays static-array

5
推荐指数
2
解决办法
7万
查看次数