2017-12-25 21 views
-2
for (i=1; i<=10; i++) myvector.push_back(i); 

    // erase the 6th element 
    myvector.erase (myvector.begin()+5); 

    // erase the first 3 elements: 
    myvector.erase (myvector.begin(),myvector.begin()+3); 

    cout << "myvector contains:"; 
    for (i=0; i<myvector.size(); ++i) 

i = 0の後に開始する必要はなく、代わりにi = 1から要素を格納できるように、消去関数を操作する方法はありますか基本的に私は1つの索引付けを保持したい)./ *これらのコードは、1つの索引付けに格納したものの、要素を0つの索引付けとして格納します。 */erase()を使用した後にベクトルの要素を配置する

+4

あなたは* C++での配列(ベクトルと同様に)インデックスはゼロベースですか?言語自体のセマンティクスを変更する理由は何ですか? 1ベースのインデックスを使用して解決したい*本当の*問題は何ですか? –

+0

「索引付け」という用語は、誤解を招くことがあります。 C/C++で "インデックス"と呼ばれるものは、通常、オフセット*であるので、0から始まります。 – VTT

+0

基本的に要素を保存したいと思います。配列とインデックスの1〜10は同じでなければなりません。しかし、私は消去機能を使用した後、要素のインデックスはゼロインデックスに変わります。だから、私はerase()を使用して、1ベースのインデックス付けを保持する方法もありますか? –

答えて

0

forループを使用して最後の要素を消去する前に、目的の要素の後ろの要素を1つのインデックスだけ下にシフトすることができると思います。 たとえば、要素5を消去したい場合は、要素5 =要素6と要素6 =要素7 ...などを実行できます。最後の要素に到達し、要素100(最後の要素)=要素99を実行すると、99と100の位置に要素100のコピーが2つあります。その後、100の位置にある要素100を消去します。

+0

はい、私はいつもこのようにすることができますが、私のシナリオでは消去機能を使うことは本当に重要です。 –

+1

要素を削除した後、何をしたいですか? – QuIcKmAtHs

+1

ベクトルとその内容を1インデックスにシフトする予定ですか? – QuIcKmAtHs

関連する問題