0

作成した整数とクラスのマップがあります。ここで、リスト内の各要素の整数を変更する必要があります。

私はこのようにsthについて考えました:

std::map<int, Product> ProductList; //This is filled somewhere and can be accessed in my function 

void remove()
{
  std::map<int, Product>::iterator it = ProductList.begin();
  for(; it != ProductList.end(); it++)
  {
    it->first = it->first - 1;
  }
}

今、私のコンパイラは言う

エラー: 読み取り専用メンバー ' std::pair<const int, Product>::first' の割り当て

私は何を間違っていますか?1各要素の整数から減算する必要があります。

4

3 に答える 3

1

そんなことはできません。マップ内の要素のキーを変更しようとしています。キーは値のロックを解除するため、値はキーによってロック解除されます。別のキーで同じ値のロックを解除するにはどうすればよいですか?

キーで値を取得するのは簡単なので、マップを使用しています。しかし、キーをインデックスとして使用しようとしていますが、これは不可能です。これは別のデータ構造です。

要素にはベクトル、キーにはベクトル、またはマップの一時コピーを使用する必要があると思います。なぜこれをやろうとしているのかについて詳しく教えていただければ、解決策についてもより具体的に説明できるかもしれません。

于 2013-06-16T13:14:51.370 に答える
0

新しいペアをマップに挿入し、古いペアを消去する必要があります。新しいマップを作成するのがおそらく最善です。

std::map<int,Product> oldProductList;
std::map<int,Product> newProductList;
std::map<product,int>::iterator it = iksProductList.begin();
for(; it != ProductList.end(); it++)
{
    newProductList[it->first - 1] = it->second;
}
于 2013-06-16T12:41:50.453 に答える