掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
vectorのerase (ID:70404)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ますます突っ込みどころが増えている気のせいがするが・・・ vector<string> v; と書いたら、どう解釈されるかはわかる? ・ v という vector が1個 ・デフォルト初期化される(要素数0個) int i; と書いたのと同じ。 vector<string> a[30]; であれば ・ a という「 vector の配列」が作られ、その配列の要素数は30 つまり30個の vector が作られる ・それぞれの vector はいずれもデフォルト初期化される (要素数0) int x[30]; と同じ。 30個の要素を持つ vector 1つを作りたいのであれば記述方式が違う。 答え書いちゃうのは簡単だけどまずは調べて味噌。 次に vector は要素数可変な配列ということを忘れちゃいけない。 push_back は要素を1個追加する、ということだ。 既に30個の要素がある vector に push_back すると要素数は31になる。 初期化時点で要素数0個の vector を作ったとしても、その必要があれば push_back を繰り返して好きな要素数にできる。 逆に初期化時点で30個の要素数を確保しておき、それを増減させたくないのであれば push_back を使うのでなく v[0]=string("abc"); のほうが適切。 # ないしは個数可変機能が無い boost::array を使う んで本題のn個目の要素を削除したい、って案件に対しては erase 1回でいい。 どこを(=n番目)削除するか、その iterator を決めるのには std::advance を使う。 これもまた今ここで答え書いちゃうのは簡単だけど、もうちょっと考えて味噌。 要素数30個の vector から1個要素を削除すると、要素数29個になるぞ。 それが望みの動作なのかどうか、要検討
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.