プログラムが使用するストリーム(データベースまたはファイル)を選択できるように、いくつかのイベントに依存するデュアルストリームシステムを構築しています。私はファイルを使用するときにデータベースをシミュレートすることを考え、これを思いつきました。std:: listはSqlRowとして、マップはそれぞれに関連付けられた列と値の値になります。説明するために:
typedef map<string, string> SqlColumn;
typedef list<SqlColumn> SqlRow;
このように定義すると、次のようなことSqlRow *data = new SqlRow(0);
をするとエラーが発生します。data[row].insert(make_pair("Key", "Value"));
error C2661: 'std::list<_Ty>::insert' : no overloaded function takes 1 arguments
1> with
1> [
1> _Ty=SqlColumn
1> ]
つまり、コンパイラはある種の多次元リストを作成しているようです。そこに他の次元を配置すると、機能します。(実際には別のエラーが発生します。ただし、必要なマップを示しています。エラーはそれとは関係ありません。ただし、投稿します。)
誰かが何が起こっているのか教えてもらえますか?
追加情報:エラーC2676:
binary '[' : 'SqlRow' does not define this operator or a conversion to a type acceptable to the predefined operator
error C2228: left of '.insert' must have class/struct/union