8

私はこの地図を持っています: map<int, int > items. キーが与えられた場合、このマップは、存在する場合はキーに対応するアイテムを返します。それ以外の場合、マップは、指定されたキーよりもすぐに小さいキーを持つアイテムを返します。たとえば、私が持っている場合:

  items[0]=0;
  items[6]=10;
  items[15]=18;
  items[20]=22;

key=15 の場合よりも、マップが値 18 の項目を返すことを望みます。それ以外の場合、key=9 の場合、マップが値 10 の項目を返すことを望みます。

この場合の関数が見つかりません。しかし、私はこの方法で試しました:

itlow=items.lower_bound(key);
if(!items.count(key))
   itlow--;
return itlow->second;

items[0]=0これは、マップにデフォルトの最小値を入力して、私が望むように機能しますが、それがitlow--;適切なプログラミングではないことはわかっています。どのようにできるのか?皆さんありがとう。

4

2 に答える 2