Can anyone recommend a lightweight open source C++ table data structure that has data access similar to a database table? (i.e. a 2D array but with named columns - ideally, each column will hold data of a single type [see below]).
I have had a quick look on Google, but have not found anything very useful.
The way I see it, these are the options available to me:
So here I am, choosing the quickest route (hopefully one that will also prove to be the the most efficient use of my time - since whatever is recommended here is likely to be peer reviewed).
So, can anyone recommend a C++ class/ set of classes that provides a "database table like" interface?
The main requirements are:
[EDIT]
To further demonstrate how I want to use the library, please see the pseudo code below to see simple use of such a class (simple, meaning now iteration of rows and columns - which would be really cool). For now just keeping things simple:
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')));
}
A C program memory layout in C mainly comprises six components these are heap, stack, code segment, command-line arguments, uninitialized and initialized data segments. Each of these segments has its own read, write permissions.
Basically, the memory layout of C program contains five segments these are the stack segment, heap segment, BSS (block started by symbol), DS (Data Segment) and text segment. Each segment has own read, write and executable permission.
MEMORY tables use a fixed-length row-storage format. Variable-length types such as VARCHAR are stored using a fixed length. MEMORY tables cannot contain BLOB or TEXT columns. MEMORY includes support for AUTO_INCREMENT columns.
In C, the library function malloc is used to allocate a block of memory on the heap. The program accesses this block of memory via a pointer that malloc returns. When the memory is no longer needed, the pointer is passed to free which deallocates the memory so that it can be used for other purposes.
For creating from scratch (very big scratch) try Boost Multi-index Container. It is not really a database implementation but it could help.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With