将字符串向量移到另一个字符串向量

时间:2020-03-20 12:01:59

标签: c++ string vector int

我正在尝试将字符串向量中的元素移动到另一个字符串向量。目前,我已经找到了一个解决方案,但这仅适用于整数向量。我知道要像矢量一样进行明显的更改,但是我正在努力弄清楚我还应该更改什么。下面是用于将整数向量移动到另一个整数向量的代码。

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 :(得分:0)

即使对于整数向量,您的代码也是错误的。

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

它还有一个问题,即假设目标向量vec2足够大到可以接收源向量vec1的内容。更好的代码是在进行移动之前将vec2的大小调整为与vec1相同的大小

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

那是没有道理的,因为任何代码都无法与其他种类的向量一起使用。您发现其他媒介有什么问题?