В настоящее время я немного работаю с Berkeley DB и пытаюсь понять встроенную функцию C ++. Проблема в том, что я понятия не имею, как использовать эту функцию.Нет примеров C ++ (только эти раздутые примеры C) или модульных тестов, которые я мог бы использовать, чтобы понять это.
Я хотел бы особенно использовать DbMultipleKeyDataBuilder, который должен быть заполнен данными, полученными из std ::карта.
Как мне инициализировать параметр конструктора DbMultipleKeyDataBuilder?Что происходит с параметром данных метода Db :: put?Должно ли оно быть пустым или NULL?
Если кто-то успешно использовал эти классы, не могли бы вы привести несколько небольших примеров?
Заранее спасибо.
С уважением, Мартин
РЕДАКТИРОВАТЬ:
Хорошо, пока у меня есть следующий код
void
Storage::bulkInsert(
TransactionI& txn,
const Entries& entries) const
{
if(entries.size() <= 0)
return;
char buffer[1024];
memset(buffer, 0, 1024);
Dbt multipleDbts;
multipleDbts.set_ulen(1024 * sizeof(char));
multipleDbts.set_data(&buffer);
multipleDbts.set_flags(DB_DBT_USERMEM | DB_DBT_BULK);
DbMultipleKeyDataBuilder keyDataBuilder(multipleDbts);
Dbt dbtKey;
Dbt dbtValue;
for(typename Entries::const_iterator iter = entries.begin();
iter != entries.end(); ++iter)
{
uint64_t tmpKey = iter->first;
const std::string& tmpValue = iter->second;
keyDataBuilder.append(
&tmpKey, sizeof(uint64_t),
const_cast<char*>(tmpValue.c_str()), tmpValue.length()+1);
}
this->getDbHandle().put(txn.getDbTxn(), &multipleDbts, 0, DB_MULTIPLE_KEY);
}
Но как насчет буфера Dbt множественныеDbts ?!Как этот буфер должен быть создан.Представьте, что у меня есть пары ключ / значение, где ключ представляет собой целое число и значение строки различной длины?