>
Note:
bdbplusplus-1.1.tar.gz
| Berkeley DB C++ API class (option flags) | BDB++ class (C++ Standard Library concept) |
| Db (DB_BTREE opened without duplicate data) | bdbmap (almostly, unique/sorted/pair associative container) |
| Db (DB_BTREE opened with DB_DUP or DB_DUPSORT) | bdbmultimap (almostly, unique/sorted/pair associative container) |
| Dbc (cursor of DB_BTREE type Db) | bdbmap::iterator, bdbmultimap::iterator (bidirectional iterator) |
std::map<int,int> m; // ... std::map::iterator i = m.begin(); // ... i->second = 3;
bdbplusplus::bdbmap<int,int> m; // ... bdbplusplus::bdbmap::iterator i = m.begin(); // ... i = 3;
#include <iostream>
#include "bdbmap.hpp"
using namespace std;
using namespace bdbplusplus;
typedef bdbmap<int, int> bdbcont;
int main(void)
{
u_int32_t DBENV_ctor_flag = 0;
u_int32_t DBENV_open_flag = DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE;
DbEnv dbenv(DBENV_ctor_flag);
try {
dbenv.set_error_stream(&cerr);
dbenv.open("./db_home",DBENV_open_flag,0644);
try {
bdbcont cppdb(&dbenv);
for (int i=0; i<5; i++) cppdb.insert(make_pair(i,i+1));
for (bdbcont::iterator i=cppdb.begin(); i!=cppdb.end(); ++i)
cout <<(*i).first <<"," <<i->second <<endl;
cppdb.insert(make_pair(1,1));
cppdb.insert(make_pair(1,3));
cppdb.insert(make_pair(11,4));
// cppdb.erase(cppdb.end(),cppdb.end());
for (bdbcont::reverse_iterator i=cppdb.rbegin(); i!=cppdb.rend(); ++i)
cout <<(*i).first <<"," <<i->second <<endl;
} catch (DbMemoryException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (DbException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (...) { dbenv.errx("Unknown exception!"); }
dbenv.close(0);
} catch (DbMemoryException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (DbException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (...) { dbenv.errx("Unknown exception!");
}
return 0;
}
0,1 1,2 2,3 3,4 4,5 11,4 4,5 3,4 2,3 1,2 0,1
#include <iostream>
#include "bdbmultimap.hpp"
using namespace std;
using namespace bdbplusplus;
typedef bdbmultimap<int, int> bdbcont;
int main(void)
{
u_int32_t DBENV_ctor_flag = 0;
u_int32_t DBENV_open_flag = DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE;
DbEnv dbenv(DBENV_ctor_flag);
try {
dbenv.set_error_stream(&cerr);
dbenv.open("./db_home",DBENV_open_flag,0644);
try {
bdbcont cppdb(&dbenv,0,
DbMultiMapSortConfig<
DbtCompareType<int>::less ,
DbtCompareType<int>::less >()
);
for (int i=0; i<5; i++) cppdb.insert(make_pair(i,i+1));
for (bdbcont::iterator i=cppdb.begin(); i!=cppdb.end(); ++i)
cout <<(*i).first <<"," <<i->second <<endl;
cppdb.insert(make_pair(1,1));
cppdb.insert(make_pair(1,3));
cppdb.insert(make_pair(11,4));
// cppdb.erase(cppdb.end(),cppdb.end());
for (bdbcont::reverse_iterator i=cppdb.rbegin(); i!=cppdb.rend(); ++i)
cout <<(*i).first <<"," <<i->second <<endl;
} catch (DbMemoryException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (DbException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (...) { dbenv.errx("Unknown exception!");
}
dbenv.close(0);
} catch (DbMemoryException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (DbException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (...) { dbenv.errx("Unknown exception!");
}
return 0;
}
0,1 1,2 2,3 3,4 4,5 11,4 4,5 3,4 2,3 1,3 1,2 1,1 0,1
#include <iostream>
#include "bdbmap.hpp"
#include "bdbmultimap.hpp"
using namespace std;
using namespace bdbplusplus;
struct Data
{
int company;
int salary;
Data(int c=0, int s=0) : company(c), salary(s) { }
};
typedef bdbmap<int, Data> bdbcont;
typedef IndexTypeDef<int, Data, int>::bdbmultimap bdbindex;
template <>
const int& MakeIndex<int, Data, int>::operator()(const int& k, const Data& d)
{ return *(const int*)(&d); }
int main(void)
{
u_int32_t DBENV_ctor_flag = 0;
u_int32_t DBENV_open_flag = DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE;
DbEnv dbenv(DBENV_ctor_flag);
try {
dbenv.set_error_stream(&cerr);
dbenv.open("./db_home",DBENV_open_flag,0644);
try {
bdbcont cppdb(&dbenv);
bdbindex cppidx(&dbenv, 0,
IndexConfig <
DbMultiMapConfig<bdbindex::comp_type,
bdbindex::cast_type>,
bdbcont >(cppdb) );
for (int i=0; i<10; i++) cppdb.insert(make_pair(i,Data(i%3,i+100)));
for (bdbcont::iterator i=cppdb.begin(); i!=cppdb.end(); ++i)
cout <<(*i).first <<","
<<i->second.company <<',' <<i->second.salary <<endl;
cout <<endl;
for (bdbindex::iterator i=cppidx.begin(); i!=cppidx.end(); ++i)
cout <<(*i).first <<"," <<i->pkey <<','
<<i->second.company <<',' <<i->second.salary <<endl;
cout <<endl;
pair<bdbindex::iterator,bdbindex::iterator> p=cppidx.equal_range(2);
for (bdbindex::iterator i=p.first; i!=p.second; ++i)
cout <<(*i).first <<"," <<i->pkey <<','
<<i->second.company <<',' <<i->second.salary <<endl;
} catch (DbMemoryException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (DbException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (...) { dbenv.errx("Unknown exception!");
}
dbenv.close(0);
} catch (DbMemoryException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (DbException& dbexn) { dbenv.err(dbexn.get_errno(),"prefix");
} catch (...) { dbenv.errx("Unknown exception!");
}
return 0;
}
0,0,100 1,1,101 2,2,102 3,0,103 4,1,104 5,2,105 6,0,106 7,1,107 8,2,108 9,0,109 0,0,0,100 0,3,0,103 0,6,0,106 0,9,0,109 1,1,1,101 1,4,1,104 1,7,1,107 2,2,2,102 2,5,2,105 2,8,2,108 2,2,2,102 2,5,2,105 2,8,2,108