gpt4 book ai didi

C++:为表实现行迭代器

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:15 24 4
gpt4 key购买 nike

我有一个用 C++ 实现的通用表类,它使用 shared_ptr< ptr_vector< vector<T> > >作为其支持,其中 T是任意类型名; ptr_vector包含指向对应于表中列的 vector 的指针。我决定包装 ptr_vectorshared_ptr因为表可能包含数百万行,并且 vector s 包含 ptr_vector 中每一列的数据为了同样的原因。 (请告诉我这是否可以改进。)

在此表上实现按列操作很简单,因为我可以访问 vector 提供的 native 迭代器。但是,我还需要表支持按行操作:应该支持相对普通的操作,例如添加和删除行,以及对表使用 STL 算法的能力。现在,我遇到了一些需要帮助解决的设计问题:

  1. 看来实现一个自定义迭代器来进行逐行操作是完成上述内容所必需的。 boost::iterator_adaptor 是执行此操作的正确方法吗?
  2. 当用户向表中添加行时,我不希望将特定的数据结构强加给用户——我该怎么做呢?我正在考虑接受迭代器作为 add_row() 的参数方法。
  3. 如果您认为我应该以不同的方式实现此表结构,我愿意接受您对我提出的任何建议。它最初设计用于存储从包含数十万行条目的制表符分隔文件中读取的字符串。

非常感谢您的帮助!

最佳答案

Boost 库有一个名为 multi_array 的容器它提供了一个 n 维动态数组,可以沿每个维度访问和操作。这似乎与您要构建的非常相似,也许您可​​以改用它?

关于C++:为表实现行迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com