让我先声明一下,我的大部分背景都是函数式编程语言,所以我对 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<mystruct> 中。现在说我想通过第 4 列将这个向量子集化为两个向量,其中每个包含 P 的元素都在一个向量中,而 C 在另一个向量中。
现在我给出的例子已经相当简化了,但实际问题涉及到多次子集。
我最初的幼稚实现是遍历整个向量,创建由新向量定义的各个子集,然后对这些新创建的向量进行子集化。也许更节省内存的方法是创建一个索引,然后将其缩小。
现在我的问题是,就速度/内存使用而言,是否有更有效的方法来执行此操作,或者通过这个 std::vector< mystruct > 框架,或者是否有更好的数据结构来处理这种类型的事情。
谢谢!
编辑:
基本上我想要的输出是前两行和最后一行。另一件值得注意的事情是,通常数据集不像示例那样排序,因此 Cs 和 Ps 没有分组在一起。