Skip to main content

Different methods to copy in C++ STL and its uses with code


//
//  main.cpp
//  Exp
//
//  Created by Manish on 07/11/19.
//  Copyright © 2019 Manish. All rights reserved.
//

#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;


int main(int argc, const char * argv[]) {

    //1
    //copy**************************************************
    vector<string> sourceA={"a","b","c","d","e","f","g","h"};
    vector<string> dest={"A","B","C","D","E","F","G","H"};
    //copy a to d and replace A to D in dest
    copy(sourceA.begin(), sourceA.begin()+4, dest.begin());
    
    for(auto x:dest)
    {
        cout<<x<<endl;
    }
    
    
    cout<<"---------------------"<<endl;
    
    //2
    //copy if**********************************************//get only two element which is greator than 10
    vector<int> vectorB={2,4,6,8,10,12,14,16,18,20};
    vector<int> result={0,0};

    copy_if(vectorB.begin(), vectorB.end(), result.begin(), [](int x){
        return x>10;
    });
    
    for(auto x:result)
    {
        cout<<x<<endl;
    }
    
    cout<<"---------------------"<<endl;
    //3
    //copy_n copy but second parameter is how many items you want to copy from source to destination
    
    
    vector<string> sourceN={"a","b","c","d","e","f","g","h"};
    vector<string> destN={"A","B","C","D","E","F","G","H"};
    //copy first three item in destination
    copy_n(sourceN.begin(), 3, destN.begin());
    
    for(auto x:destN)
    {
        cout<<x<<endl;
    }
     cout<<"---------------------"<<endl;
    //4
    //copy backwards
    vector<int> vectorBC={1,2,3,4,5,7};
    vector<int> resultBC={10,20,30,40,50,60,70};
    
    //copy element from source to destination from backwards
    copy_backward(vectorBC.begin(), vectorBC.begin()+3, resultBC.end()-1);
    for(auto x:resultBC)
    {
        cout<<x<<endl;
    }
    
    cout<<"---------------------"<<endl;
    
}


copy and run the above all example are running example

Comments