如何使用copy_if从二维矢量中复制特定项目
How to copy specific items from a 2d vector using copy_if
例如,我有一个2d向量和一个1d向量,我想使用std::copy_if从算法库复制每行的第一项
std::vector<std::vector<std::string>> names{ { "Allan", "Daniel", "Maria" }, {"John", "Louis", "Will"}, {"Bill", "Joe", "Nick"}};
因此,我们必须将"Allan"、"John"answers"Bill"复制到目标向量dst 中
std::vector<std::string> dst;
您应该使用std::transform
而不是std::copy_if
:
std::transform(names.begin(), names.end(), std::back_inserter(dst),
[](const std::vector<std::string>& v) { return v[0]; });
这不是适合您任务的算法。std::copy_if
复制一个范围的元素,如果该元素满足某个谓词。
这似乎需要使用std::copy
,但这将是一个问题,因为copy的意思只是无条件地复制每个元素。
在您的情况下,合适的算法是std::transform
,因为您希望将范围中的每个元素转换为不同的类型。
std::vector<std::string> dst;
std::transform(names.begin(), names.end(),
std::back_inserter(dst), /* function */);
其中CCD_ 6将是仅从CCD_ 8返回第一个CCD_。
相关文章:
- 将二维矢量传递给类
- 将值从二维数组输出到文本文件
- 我在二维向量中是否正确分配了内存
- 带结构的二维矢量:如何存储元素
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- 坚持将双指针管理的内存复制到二维数组
- 使用递归的二维链表复制构造函数
- 复制二维阵列C++
- 在C++中将一个二维数组复制到其他未知大小的二维数组
- 将二维数组元素复制到另一个具有其他大小的二维数组中
- 将二维的一部分复制到自身上
- 将二维数组的 1 维复制到同一数组的另一部分
- 二维向量的复制构造函数
- 标准::复制二维数组
- 将字符串复制到二维字符数组时出错
- 使用strncpy将字符串复制到二维字符数组中
- 如何在二维矢量中复制矢量
- 动态二维数组的复制构造函数
- 最快的方式复制一维二维矢量在c++