在C ++中是否可以使用int值矩阵,我可以通过字符串索引访问这些值?做一些像M [“one”] [“two”] ++;等
答案 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]);