2016-10-02 1 views
-3

vector.eraseベクトルオブジェクトのサイズを変更して、vector.size()で縮小サイズを測定できるようにしますか?1つ以上の要素を消去した後、ベクトル配列のサイズを変更しますか?

例えば、

vector<int> v(5); 
v = {1,2,3,4,5}; 

と4で削除します。

v.erase(v.begin()+4); 

私のベクターオブジェクトvは現在4のサイズを持っていますか?つまり、この操作後にv.size() == 4ですか?

+6

試してみるか、ドキュメントを読んでください。 –

+0

Btw。サイズと容量を混同しないでください。 – deviantfan

+1

.size()は減少します。 – Kishaan92

答えて

6

はい、サイズは、要素を消去すると、が減少します。


この:)のように、最小限の例を書き込むことによって、しかし、自分自身をテストすることを恐れてはいけない:

[email protected]:~$ g++ -Wall -std=c++0x main.cpp 
[email protected]:~$ ./a.out 
5 
4 

そして、我々が期待する:

#include <iostream> 
#include <vector> 

using namespace std; 

int main() 
{ 
    vector<int> v(5); 
    v = {1,2,3,4,5}; 
    cout << v.size() << endl; 
    v.erase(v.begin()+4); 
    cout << v.size() << endl; 
    return 0; 
} 

は、あなたが得るだろうそう?私はrefが言う意味:

は、ベクトルの要素数を返します

リターンの大きさ。

これは、ベクトルに保持されている実際のオブジェクトの数です。これは、その記憶容量に必ず等しい ではありません。

+0

ありがとう!その特定のセルが空いているのか、それとも連続した要素が左にシフトするのだろうと私は思っていました! – Kishaan92

+1

あなたは@ Kishaan92を歓迎します。 :)ところで、疑わしいときは、テストするための最小限の例を書くことに慣れるべきです! :) – gsamaras

+0

確かに!私は次回ここにそれを掲示する前にそれをテストします。私はコードbtwの初心者です:) – Kishaan92

関連する問題