c++ - 将字符串向量移动到另一个字符串向量
问题描述
我正在尝试将字符串向量中的元素移动到另一个字符串向量。目前我找到了一个解决方案,但它只适用于一个整数向量。我知道有明显的改变,比如矢量,但我正在努力弄清楚我还应该改变什么。下面是用于将整数向量移动到另一个整数向量的代码。
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
。更好的代码是将大小调整为与移动之前vec2
相同的大小vec1
vec2.resize(vec1.size());
std::move(vec1.begin(), vec1.end(), vec2.begin());
也就是说,没有理由比任何代码都不能与其他类型的向量一起使用。你看到其他载体有什么问题?
推荐阅读
- python - date_range 生成器最近 30 天 Python
- json - 为什么推荐使用 .JSON 而不是 protobufjs 的静态代码?
- python - 如何训练这个多类 RNN?
- oracle-apex - Oracle Apex 加载没有插件的 excel 数据 .xlsm
- php - 为什么我的 Ajax 请求在 laravel 中无限滚动分页失败?
- c++ - g++-10中如何结合基类显式构造函数和指定初始化?
- flutter - 带有可扩展 itemBuilder 的 ListView - Flutter
- .net-core - MassTransit Azure 服务总线:属性(主题/订阅)的更改未在 Azure 上更新
- asp.net - 是否可以在 .NET 核心 Web 应用程序启动中注册 .NET 框架 DbContext?
- asp.net-mvc - ASP.NET MVC:在表单提交时保存相关实体