c++ - 使用枚举作为索引访问二维 vector

标签 c++ vector enums

我想使用枚举作为索引来访问二维 vector 。然而,这给了我一个 EXC_BAD_ACCESS 错误。我按如下方式创建了枚举 -

enum ROW 
{
    R0 = 0,
    R1 = 1,
};

ROW row; 

enum COLUMN 
{
    C1 = 0,
    C2 = 1,
}; 

COLUMN col;

二维 vector 是这样创建的 -

std::vector<std::vector<double>> alpha{ { 1.46774172175387E-005, 2.000064981},
                                        { 3.46774172175387E-005, 4.59485786231327E-005} };

当我尝试访问这样的元素时出现错误 -

p = alpha[row][col];

有人可以指出我在这里做错了什么吗?

我在 Xcode 6.1、OS X Yosemite 上工作。

最佳答案

您似乎还没有初始化rowcol。如果是,则 p = alpha[row][col]; 的行为将未定义

请注意,除了在 enum 中明确指定的值之外,还可以将其他整数值分配给 rowcol。因此,您的方法不一定会阻止数组边界之外的访问尝试。

C++11 引入了具有更严格规则的枚举器类。

关于c++ - 使用枚举作为索引访问二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29667885/

相关文章:

C++ DLL 注入(inject) : path with special characters

swift - 如何在 Swift 中将 func 定义为 Enum 的特定情况?

java - 采用 Enum 参数的静态方法

c# - Windows Phone 8.1 XAML : Put Enum Value into XAML Attribute

c++ - istringstream 十进制整数输入为8位类型

c++ - 如何识别股市中的矩形价格拥塞? (C++)

c++ - 如果 sizeof(struct ...) 不等于给定数字,如何获得 C 编译器#error?

c++ - 引用同一对象的 vector

c++ - 在 C++ 中删除指针 vector 与对象

c# - (uint) index >= (uint)_size 比 index >= _size 更好吗?