C++ で、文字列インデックスを介してこれらの値にアクセスできる int 値のマトリックスを持つことは可能ですか? M["one"]["two"]++; のようなことをする 等
3 に答える
4
unordered_map
(boost または でc++11
) または単にmap
古き良きで使用しC++
ます。を作りますunordered_map<string, unordered_map<string, int> >
。トリックを行う必要があります。
于 2013-01-25T14:48:49.653 に答える
0
内部の詳細は、ユーザー インターフェイスとは別に保持します。
たとえば、別の言語を使用したい場合はどうしますか?
単語から整数へのマップを用意します。
map<string, unsigned int> index;
index["one"] = 1;
// .etc
通常どおり、2D 配列で整数を使用します。
int x = index["one"];
int y = index["two"];
doSomething(array[x][y]);
于 2013-01-25T15:06:27.297 に答える
0
直接的ではありませんが、あなたが尋ねるので、あなたはおそらく知らないでしょうoperator []()
. []
カスタムオペレータを定義できます。
背後にある概念を説明するだけです。クラス Row または Column を定義して、std::vector<int>
. このクラスでは、次を定義できます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;
于 2013-01-25T14:55:09.343 に答える