2016-12-18 41 views
0

私はstd :: copyの作業を行うことができませんでした。私はインターネットでいくつかのコードを試しましたが、動作させることができませんでした。私はコピーを使用する必要があります。なぜなら、クラスのコンストラクタでそれを使用する理由は理解できません(コンストラクタで新しい変数を宣言することはできません)。std :: copyの使い方は? OSXSierra/CLION/C++ 11では動作しません。

私はこのコードを持っている:

#include <iostream> 
#include <vector> 

using namespace std; 

int main() { 
    vector<int> myVector; 
    vector<int> vectorCopy; 

    for (int i = 0; i < 10; i++) { 
     myVector.push_back(i); 
    } 

    cout << vectorCopy.size() << endl; //0 

    vectorCopy.reserve(myVector.size()); 

    cout << vectorCopy.size() << endl; //PROBLEM: again 0 

    copy(myVector.begin(), myVector.end(), vectorCopy.begin()); 

    cout << vectorCopy.size() << endl; //PROBLEM 2: again 0 

    for (int j = 0; j < vectorCopy.size(); j++) { 
     cout << vectorCopy[j] << endl;//never execute; 
    } 


    /* Enter your code here. Read input from STDIN. Print output to STDOUT */ 
    return 0; 
} 

任意のアイデア?私はMacOS SierraとC++ 11でCLIONを使用しています。

ありがとうございます!

+1

「作業していない」ことについて詳しく説明できますか?どのようなエラーが表示されますか? –

+1

なぜ 'std :: copy'が必要なのかは明らかではありません(使用方法を理解する以外には) – juanchopanza

+0

"働かない "という意味は、ベクターがコピーされていないことを意味します。 codeCopyのサイズが0であるため) – Werem

答えて

2

第3のパラメータとして出力イテレータをstd::copy()に渡す必要があります。通常、std :: back_inserterのようなものを使用します。

+1

'std :: vector :: iterator'は出力イテレータのすべての要件を満たします。 –

関連する問題