![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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ランキング
-
smallにtext-allignが効かない
-
textareaの幅を画面と合わせたい
-
【ヒトの神秘】美男美女から何...
-
初歩的な質問です。<div>のwidt...
-
指定したidやclass以外の要素を...
-
改行ほどは行かないけど、若干...
-
input type="file"の幅と高さ
-
2個のFormを横並びにしたい
-
text-align: center; 無視される
-
H1タグを画像にしたい
-
C++のenumについて質問
-
メールアドレス(グループ)の...
-
ヘッダフッダ固定でコンテンツ...
-
スタイルシートで文字色を指定...
-
双方向リストのソート方法につ...
-
imgタグをそのまま使うことは正...
-
iframeのスクロールバー非表示
-
統計学わかる方。 解説付きで途...
-
border: noneでボタンの境界線...
-
fontawesomeのアイコンを少し大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ヒトの神秘】美男美女から何...
-
smallにtext-allignが効かない
-
含む含まないという概念自体の...
-
質問1.
-
2個のFormを横並びにしたい
-
「諸要素」とはどういう意味で...
-
input type="hidden"で取得した...
-
NからZへの全単射を具体的に構...
-
角丸画像の背景色を透明にした...
-
改行ほどは行かないけど、若干...
-
マージソートの計算量について-...
-
親要素・子要素
-
border: noneでボタンの境界線...
-
C言語 並び替え(配列)について
-
tdに対してmin-heightの定義、...
-
HTMLでTextareaを横に2つ並べ...
-
テキストボックスの中にリンク...
-
CSSで改行後の行間調整
-
H1タグを画像にしたい
-
ある要素の中身を全部グレーア...
おすすめ情報