首先,我要说一下我的大部分背景都是函数式编程语言,所以我对C++还是个新手。

无论如何,我正在处理的问题是我正在解析具有多个变量类型的csv文件。来自数据的样本行如下所示:

"2011-04-14 16:00:00, X, 1314.52, P, 812.1, 812"
"2011-04-14 16:01:00, X, 1316.32, P, 813.2, 813.1"
"2011-04-14 16:02:00, X, 1315.23, C, 811.2, 811.1"

所以我所做的就是定义一个存储每一行​​的结构。然后将它们分别存储在std::vector 中。现在说我想按第4列将此 vector 子集化为两个 vector ,其中每个包含P的元素都在一个元素中,每个元素都包含C。

现在,我给出的示例已相当简化,但实际问题涉及多次设置子集。

我最初的天真的实现是遍历整个 vector ,创建由新 vector 定义的单个子集,然后对那些新创建的 vector 进行子集化。也许可以更有效地利用内存来创建索引,然后将其缩小。

现在我的问题是,在速度/内存使用方面,是否有更有效的方法可以通过此std::vector 框架执行此操作,或者是否有更好的数据结构来处理此类事件。

谢谢!

编辑:

基本上,我想要的输出分别是前两行和最后一行。另一点值得注意的是,通常数据集没有像示例中那样排序,因此C和P没有分组在一起。

最佳答案

我为此使用了std::partition。但是,这不是增强的一部分。

关于c++ - C++从用户定义的结构的 vector 中高效地提取子集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15794939/

10-11 21:04
查看更多