我需要初始化一个静态数组。并不是所有的值都是顺序的。
对于顺序数组来说,类似这样的东西工作得很好:
class Foo {
public:
static const char * name[];
}
const char * Foo::name[] = { "Sun", "Moon" };如何在数组中任意位置赋值?我需要这样做(伪代码):
const char * Foo::name[] = { 67: "Sun", 68: "Moon" };数组永远不会大于255;索引来自字节值。
我找到了螺纹的一部分,在那里有人给出了一个类似于我想要的东西的例子,但我无法让这样的事情起作用。
type array[SIZE] = {[SIZE-4]=1, 2, 3, 4};发布于 2012-07-04 04:06:55
这里有一个老派的方法:
class NameArray {
public:
NameArray()
{
array[67] = "Sun";
array[68] = "Moon";
}
const char *operator[](size_t index) const
{
assert(index<256);
return array[index];
}
private:
const char * array[256];
};
class Foo {
public:
static NameArray name;
};
NameArray Foo::name;通过将数组包装在类中,可以确保使用所需的值构造数组。您也可以进行边界检查。
发布于 2012-07-04 03:59:00
我建议您使用std::map<int, std::string> (如果您有C++11支持的话),而不是使用数组。然后,您可以使用代码:m[67] = "Sun"插入到此映射中,并使用std::string s = m[67];检索项。
https://stackoverflow.com/questions/11322202
复制相似问题