2

C++ で、文字列インデックスを介してこれらの値にアクセスできる int 値のマトリックスを持つことは可能ですか? M["one"]["two"]++; のようなことをする 等

4

3 に答える 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 に答える