-1
bimap
というバイナリファイルには実際には大きすぎる(1億8000万~3000万エントリ)書き込み方法を知りたいと思います。 bimap
を作成するには、次のコードを用意します。ここでは、2つのストリームを作成してバイナリデータを読み込んで読み込みます。また、要素をbimap
に挿入します。バイナリファイルにバイマップファイルを書き込んでからそれを読み取ってください
#include <string>
#include <iostream>
#include <utility>
#include <fstream>
#include <boost/bimap.hpp>
#include <boost/bimap/unordered_set_of.hpp>
#include <boost/bimap/unordered_multiset_of.hpp>
namespace bimaps = boost::bimaps;
typedef boost::bimap<bimaps::unordered_set_of<unsigned long long int>,
bimaps::unordered_multiset_of<unsigned long long int > > bimap_reference;
typedef bimap_reference::value_type position;
bimap_reference numbers;
int main()
{
std::ofstream outfile ("bmap",std::ofstream::binary);
std::ifstream infile ("bmap",std::ifstream::binary);
numbers.insert(position(123456, 100000));
numbers.insert(position(234567, 80000));
numbers.insert(position(345678, 100000));
numbers.insert(position(456789, 80000));
//want to write the file
//want to read the file
// So that I can perform the following operation
using ritr = bimap_reference::right_const_iterator;
std::pair<ritr, ritr> range = numbers.right.equal_range(80000);
auto itr = range.first;
std::cout<<"first: "<<itr->first<<std::endl;
if(itr != numbers.right.end() && itr->second ==80000){
for (itr = range.first; itr != range.second; ++itr)
{
std::cout<<"numbers:"<<itr->second<<"<->"<<itr->first<<std::endl;
}
}
else {
std::cout<<"Not found:"<<std::endl;
}
return 0;
}
bimap
を書き込んで、何らかの操作を実行したいと思っています。どうやってするの。
['boost :: archive'](http://www.boost.org/doc/libs/1_39_0/libs/serialization/doc/archives.html)を見てください。 –
適切なDBMSを使用して適切なデータベースを作成します。 –
@πάνταῥεῖありがとう、見てください – AwaitedOne