【发布时间】:2021-08-31 12:52:52
【问题描述】:
我正在寻找一种解决方案,将向量分成 3 个元素比例为 9:1:1 的独立向量,例如,如果我们在原始向量中有 1100 个元素,那么我希望得到 3 个连续具有 900、100 和 100 的向量元素。有一个函数 std::partition_copy,但是它只将数据复制到 2 个单独的向量中。
【问题讨论】:
-
没有内置任何东西。您需要创建自己的函数。
-
有一个构造函数将两个迭代器用于一系列元素。你只需要调用它 3 次。请注意
std::partition_copy复制元素,即目标元素必须已经存在(除非您使用后插入器) -
@Jakub Fraszczak 只需向 C++ 标准委员会提交一份提案以包含这样的功能。:)
-
这听起来很像 X-Y 问题。从拆分的数量和大小来看,我猜您正在将机器学习数据拆分为测试、训练、验证?然后只保留原始向量,并将指向它的迭代器传递给使用它的函数。
-
这里真正的“历史”问题是 std::vectors 除了实际的向量之外的一切。它们是一种容器,但它们缺乏数学向量的基本特征——主要是“加法”——同时提供了一些不需要的向量(删除一个术语,将下一个移到左边)。恕我直言,他们永远不应该被这样命名。