ご挨拶、
次の2行の短縮コードを使用して、あるベクトル(vec1)から別のベクトル(vec2)へのコピーを実行しようとしています(完全なテストアプリが続きます)。
vec2.reserve( vec1.size() );
copy(vec1.begin(), vec1.end(), vec2.begin());
vec2の呼び出しはベクトルvec2の容量を設定しますが、vec2へのデータのコピーはvec1からvec2への値を入力しないようです。
copy()関数をpush_back()の呼び出しに置き換えると、期待どおりに機能します。
ここで何が欠けていますか?
ご協力いただきありがとうございます。vectest.cppテストプログラムとそれに続く結果の出力は次のとおりです。
コンパイラ:cygwin上のgcc3.4.4。
ナット
/**
* vectest.cpp
*/
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec1;
vector<int> vec2;
vec1.push_back(1);
vec1.push_back(2);
vec1.push_back(3);
vec1.push_back(4);
vec1.push_back(5);
vec1.push_back(6);
vec1.push_back(7);
vec2.reserve( vec1.size() );
copy(vec1.begin(), vec1.end(), vec2.begin());
cout << "vec1.size() = " << vec1.size() << endl;
cout << "vec1.capacity() = " << vec1.capacity() << endl;
cout << "vec1: ";
for( vector<int>::const_iterator iter = vec1.begin(); iter < vec1.end(); ++iter ) {
cout << *iter << " ";
}
cout << endl;
cout << "vec2.size() = " << vec2.size() << endl;
cout << "vec2.capacity() = " << vec2.capacity() << endl;
cout << "vec2: ";
for( vector<int>::const_iterator iter = vec2.begin(); iter < vec2.end(); ++iter ) {
cout << *iter << endl;
}
cout << endl;
}
出力:
vec1.size() = 7
vec1.capacity() = 8
vec1: 1 2 3 4 5 6 7
vec2.size() = 0
vec2.capacity() = 7
vec2: