gpt4 book ai didi

C++ 内存表

转载 作者:IT老高 更新时间:2023-10-28 22:39:17 44 4
gpt4 key购买 nike

谁能推荐一个轻量级开源C++表数据结构,其数据访问类似于数据库表? (即一个二维数组,但具有命名列 - 理想情况下,每一列都将保存单一类型的数据 [见下文])。

我快速浏览了谷歌,但没有发现任何有用的东西。

在我看来,这些是可供我选择的选项:

  1. 从头开始自己写(不想发明轮子)
  2. 从 mySQL++ 中删除 SimpleResult 类并破解它
  3. 使用 sqlite (不知道这会有多轻巧 - 因为我不需要查询引擎和所有其他东西)
  4. 在这里询问是否有人知道这样的图书馆

所以我来了,选择最快的路线(希望这条路线也能最有效地利用我的时间 - 因为这里推荐的任何东西都可能经过同行评审)。

那么,谁能推荐一个提供“类似数据库表”接口(interface)的 C++ 类/类集?

主要要求是:

  1. 列有名称
  2. 可以使用行、列索引访问单元格
  3. 我可以在表格中添加行和列(理想情况下,我也可以删除它们)
  4. (很高兴):列可以有类型,因此可以节省转换为字符串的成本

[编辑]

为了进一步演示我想如何使用该库,请查看下面的伪代码以了解此类类的简单使用(简单,意味着现在行和列的迭代 - 这真的很酷)。现在只是保持简单:

typedef MemoryTable::ColType ColumnType;

table = new MemoryTable();

// Set up the structure (this can be modified later using removeColumn() etc
table->addColumn(ColumnType::Integer, 'id');
table->addColumn(ColumnType::String, 'name');
table->addColumn(ColumnType::Boolean, 'gender');
table->addColumn(ColumnType::Double, 'weight');

for (size_t i=0; i<10; i++)
{
table->addRow();
numrows = table->getNumRows();
std::cout << "We now have " << numrows << " rows.\n";

// Note can access cells using column name or index
// Also using generic value getter/setter methods. Can throw exception on type mismatch
table->setValue(i, 'id', i*i);
table->setValue(i, 'name', getRandomSimpsonCharacterName());

//just to show use of a getter method
table->setValue(i, 'gender', checkGender(table->getValue(i, 'name')));
table->setValue(i, 3, guessWeight(table->getValue(i, 'name')));
}

最佳答案

对于从头开始创建(非常大的头)尝试 Boost Multi-index Container .它不是真正的数据库实现,但它可以提供帮助。

关于C++ 内存表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283896/

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