переместить строковый вектор в другой строковый вектор - PullRequest
1 голос
/ 20 марта 2020

Я пытаюсь переместить элементы в строковом векторе в другой строковый вектор. На данный момент я нашел решение, но это только для целочисленного вектора. Я знаю, что есть очевидные изменения, такие как вектор, но я изо всех сил пытаюсь понять, что еще я должен изменить. Ниже приведен код, который используется для перемещения целочисленного вектора в другой целочисленный вектор.

int main() 
{ 
    std :: vector <int> vec1 {1, 2, 3, 4, 5}; 
    std :: vector <int> vec2 {7, 7, 7, 7, 7}; 

    // Print elements 
    std :: cout << "Vector1 contains :"; 
    for(int i = 0; i < vec1.size(); i++) 
        std :: cout << " " << vec1[i]; 
    std :: cout << "\n"; 

    // Print elements 
    std :: cout << "Vector2 contains :"; 
    for(unsigned int i = 0; i < vec2.size(); i++) 
        std :: cout << " " << vec2[i]; 
    std :: cout << "\n\n"; 

    // std :: move function 
    // move first 4 element from vec1 to starting position of vec2 
    std :: move (vec1.begin(), vec1.begin() + 4, vec2.begin() + 1); 

    // Print elements 
    std :: cout << "Vector2 contains after std::move function:"; 
    for(unsigned int i = 0; i < vec2.size(); i++) 
        std :: cout << " " << vec2[i]; 
    std :: cout << "\n";

1 Ответ

0 голосов
/ 20 марта 2020

Ваш код неверен даже для целочисленного вектора, попробуйте это.

std::move(vec1.begin(), vec1.end(), vec2.begin()); 

У него также проблема в том, что он предполагает, что вектор назначения vec2 достаточно большой, чтобы получить содержимое источника вектор vec1. Лучше было бы изменить размер vec2 до размера, равного vec1 перед выполнением перемещения

vec2.resize(vec1.size());
std::move(vec1.begin(), vec1.end(), vec2.begin()); 

При этом нет причин, по которым любой код не будет работать с другими типами векторов. Какие проблемы вы видите с другими векторами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...