将字符串向量移动到另一个字符串向量
move string vector to another string vector
我正在尝试将一个字符串向量中的元素移动到另一个字符串向量中。目前我找到了一个解决方案,但它只适用于整数向量。我知道像矢量一样需要进行明显的更改,但我正在努力弄清楚我还应该更改什么。下面是用于将整数向量移动到另一个整数向量的代码。
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";
你的代码即使对于整数向量也是错误的,试试这个。
std::move(vec1.begin(), vec1.end(), vec2.begin());
它还有一个问题,它假定目标向量 vec2
足够大,可以接收源向量 vec1
的内容。更好的代码是在执行 move
之前将 vec2
的大小调整为与 vec1
相同的大小
vec2.resize(vec1.size());
std::move(vec1.begin(), vec1.end(), vec2.begin());
也就是说,没有任何代码不能用于其他类型的向量。您发现其他载体有什么问题?
我正在尝试将一个字符串向量中的元素移动到另一个字符串向量中。目前我找到了一个解决方案,但它只适用于整数向量。我知道像矢量一样需要进行明显的更改,但我正在努力弄清楚我还应该更改什么。下面是用于将整数向量移动到另一个整数向量的代码。
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";
你的代码即使对于整数向量也是错误的,试试这个。
std::move(vec1.begin(), vec1.end(), vec2.begin());
它还有一个问题,它假定目标向量 vec2
足够大,可以接收源向量 vec1
的内容。更好的代码是在执行 move
vec2
的大小调整为与 vec1
相同的大小
vec2.resize(vec1.size());
std::move(vec1.begin(), vec1.end(), vec2.begin());
也就是说,没有任何代码不能用于其他类型的向量。您发现其他载体有什么问题?