矩阵由字符串而不是整数值索引

时间:2013-01-25 14:46:51

标签: c++ string map stl matrix

在C ++中是否可以使用int值矩阵,我可以通过字符串索引访问这些值?做一些像M [“one”] [“two”] ++;等

3 个答案:

答案 0 :(得分:4)

在良好的unordered_map中使用c++11(在提升或map中)或C++。制作一个unordered_map<string, unordered_map<string, int> >。应该做的伎俩。

答案 1 :(得分:0)

这不是直接的,但是既然你问,你可能不知道operator []()。 您可以定义自定义[]运算符。

向您解释背后的概念:您可以定义一个拥有std::vector<int>的类Row或Column。对于本课程,您可以定义operator[]

class Row
{
public:
    int& operator[](const std::string& );
    //...
    std::vector<int> ints;
}

您的类矩阵将拥有std::vector<Row>

class Matrix
{
public:
    Row& operator[](const std::string& );
    //...
    std::vector<Row> rows;
}

这将使您能够使用语法Matrix m; m["one"]["two"]=2;

答案 2 :(得分:0)

我会将内部细节与用户界面分开。

例如,如果您想使用其他语言怎么办?

从单词到整数:

map<string, unsigned int> index;
index["one"] = 1;
// .etc

正常情况下在2D数组上使用整数。

int x = index["one"];
int y = index["two"];

doSomething(array[x][y]);