No.3ベストアンサー
- 回答日時:
> insert(rp,"a");
> はエラーになりますが
> これに代わる逆イタレータ用の関数はあるのでしょうか?
insert(rp.base(), "a");
のようにbaseを使って通常のiteratorに変換すればinsertに渡せます。
(例)
list<string> lstr;
lstr.push_back("1");
lstr.push_back("2");
lstr.push_back("3");
list<string>::reverse_iterator rp;
rp = std::find(lstr.rbegin(), lstr.rend(), "2");
// 逆方向から見て"2"の直前(つまり"2"と"3"の間)に"a"を挿入する
lstr.insert(rp.base(), "a");
// lstrの要素を先頭から順番に表示する
for (list<string>::iterator p = lstr.begin(); p != lstr.end(); ++p)
{
cout << *p << endl;
}
(実行結果)
3
a
2
1
No.2
- 回答日時:
逆iteratorの普通の役割は逆方向(最後尾から先頭方向)の順次処理です。
色々と使い道はあると思います。
(例1)
// 後ろの要素から順番に表示
list<string> lstr;
lstr.push_back("1");
lstr.push_back("2");
lstr.push_back("3");
list<string>::reverse_iterator rp;
for (rp = lstr.rbegin(); rp != lstr.rend(); ++rp)
{
cout << *rp << endl;
}
(例2)
// "2"と一致する要素以前を全て消去する
list<string> lstr;
lstr.push_back("1");
lstr.push_back("2");
lstr.push_back("3");
rp = find(lstr.rbegin(), lstr.rend(), "2");
if (rp != lstr.rend()) {
lstr.erase(lstr.begin(), rp.base());
}
この回答への補足
ありがとうございます
基本的に勘違いしていました
rbegin()が最後の要素で
rend()が最初の要素の一つ前の要素ですね
そうなるとreverse()を使うと時間を損しますから使い勝手がいいですね
ところで
insert(rp,"a");
はエラーになりますが
これに代わる逆イタレータ用の関数はあるのでしょうか?
これら関数は逆イタレータ用には用意されていないのでしょうか?
No.1
- 回答日時:
ええと....
「逆イテレータは rbegin() が最初の要素の一つ前の要素を指してくれない」
とは, どのような意味でしょうか? 空リストでなければそんなことは当然ありませんよね?
この回答への補足
ありがとうございます
確かめるために
list<string> str;
list<string>::iterator p;
string str;
list<string>::reverse_iterator rp;
として
lstr.push_back("1");
lstr.push_back("2");
lstr.push_back("3");
rp=lstr.rbegin();
lstr.insert(rp,"a");//compile error
としようとしたらコンパイルでエラーになりました
逆イタレータはインサート関数も利用できないのですね
これはもう利用価値はないですね?
訂正します
list<string> lstr;
list<string>::iterator p;
string str;
list<string>::reverse_iterator rp;
として
lstr.push_back("1");
lstr.push_back("2");
lstr.push_back("3");
rp=lstr.rbegin();
lstr.insert(rp,"a");//compile error
としようとしたらコンパイルでエラーになりました
逆イタレータはインサート関数も利用できないのですね
これはもう利用価値はないですね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- JavaScript 配列の1要素を代入した変数を使って元の配列要素を削除できるか 1 2023/07/28 03:34
- Java どんな時にIteratorを使うと便利なのですか 2 2022/12/07 05:30
- HTML・CSS display: flex; と flex の違い 1 2022/04/25 20:52
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- 美術・アート デザインについての考察。 なぜ人の脳は、規則正しく連続した要素を「背景」と認識するのか、実験してみま 2 2022/04/11 21:08
- 囲碁・将棋 藤森プロの動画ちゃんねる「将棋放浪記【プロ棋士】」対戦相手は誰? 1 2023/07/06 20:05
- その他(ゲーム) みなさんはシミュレーションRPGにどういうものを求めますか? 昔に比べたら作品数がどんどん先細っちゃ 1 2022/03/28 14:55
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2個のFormを横並びにしたい
-
質問1.
-
改行ほどは行かないけど、若干...
-
含む含まないという概念自体の...
-
C言語線形リストの問題です
-
超音波で洗脳。
-
タグ前後で自動改行されない
-
【 Python range関数とlen関数 】
-
NからZへの全単射を具体的に構...
-
C言語 並び替え(配列)について
-
射出成形機の射出・保圧について
-
tdに対してmin-heightの定義、...
-
テーブルタグを使わない、表作り。
-
textareaの幅を画面と合わせたい
-
スタイルシートで文字色を指定...
-
エクセルVBAにてURLの抽出
-
配列の要素をまとめて比較したい
-
aの中にspan
-
【C++】Vector、listの要素比較...
-
border: noneでボタンの境界線...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ヒトの神秘】美男美女から何...
-
2個のFormを横並びにしたい
-
含む含まないという概念自体の...
-
角丸画像の背景色を透明にした...
-
smallにtext-allignが効かない
-
超音波で洗脳。
-
質問1.
-
「諸要素」とはどういう意味で...
-
改行ほどは行かないけど、若干...
-
1から100までの自然数のうち、2...
-
マージソートの計算量について-...
-
タグは大文字と小文字どちらが...
-
textareaの幅を画面と合わせたい
-
親要素・子要素
-
テキストボックスの中にリンク...
-
html タグの閉じスラッシュ前の...
-
input type="hidden"で取得した...
-
NからZへの全単射を具体的に構...
-
【CSS】imgタグを、親要素の幅...
-
HTMLページ上でiframeを最前面...
おすすめ情報