Sekvenční algoritmy “copy”
C++ 11

image_printTisk

Úvod

Algoritmus copy

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

template<typename C>
void printValues(C container) {
    for(auto val : container)
        cout << val << ";";
    cout << endl;
}

int main() {
    // Generujeme čísla 1..15
    vector<int> input;
    int value = 0;
    generate_n(back_inserter(input), 15, [value]() mutable { value++; return value; });
    
    // Kopirujeme prvních 10 elementů
    vector<int> output(input.size());
    copy(input.begin(), next(input.begin(), 10), output.begin());
    
    // Výstup
    cout << "VSTUP:" << endl;
    printValues(input);
    cout << "VÝSTUP:" << endl;
    printValues(output);
    return 0;
}
Unable to connect to the JDoodle service.

Algoritmus copy_n

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

template<typename C>
void printValues(C container) {
    for(auto val : container)
        cout << val << ";";
    cout << endl;
}

int main() {
    // Generujeme čísla 1..20
    vector<int> input;
    int value = 0;
    generate_n(back_inserter(input), 20, [value]() mutable { value++; return value; });
    
    // Vkládáme prvních 12 elementů
    vector<int> output;
    copy_n(input.begin(), 12, back_inserter(output));
    
    // Výstup
    cout << "VSTUP:" << endl;
    printValues(input);
    cout << "VÝSTUP:" << endl;
    printValues(output);
    return 0;
}
Unable to connect to the JDoodle service.

Algoritmus copy_if

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

template<typename C>
void printValues(C container) {
    for(auto val : container)
        cout << val << ";";
    cout << endl;
}

int main() {
    // Generujeme čísla 1..20
    vector<int> input;
    int value = 0;
    generate_n(back_inserter(input), 20, [value]() mutable { value++; return value; });
    
    // Vkládáme pouze sudá čísla
    vector<int> output;
    copy_if(input.begin(), input.end(), back_inserter(output), [](int item) { return item % 2 == 0; });
    
    // Výstup
    cout << "VSTUP:" << endl;
    printValues(input);
    cout << "VÝSTUP:" << endl;
    printValues(output);
    return 0;
}
Unable to connect to the JDoodle service.

Algoritmus copy_backward

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

template<typename C>
void printValues(C container) {
    for(auto val : container)
        cout << val << ";";
    cout << endl;
}

int main() {
    // Generujeme čísla 1..20
    vector<int> input;
    int value = 0;
    generate_n(back_inserter(input), 20, [value]() mutable { value++; return value; });
    
    // Měníme pořádí čísel
    vector<int> output(input.size());
    copy_backward(input.begin(), input.end(), output.rend());
    
    // Výstup
    cout << "VSTUP:" << endl;
    printValues(input);
    cout << "VÝSTUP:" << endl;
    printValues(output);
    return 0;
}
Unable to connect to the JDoodle service.

Shrnutí

 

image_printTisk
Sekvenční algoritmy “copy”
C++ 11
Ohodnoťte tento článek

Související články