C++ Tips


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

ここを編集
C++はとくに頭から抜けおちるのが早いので忘備録。

メモリの割り当て場所を変える

普通、スタック以外の領域にオブジェクトを生成するときはnew ObjectX(xyz)というような感じで書く。これに対し、任意の領域を割り当てるためには、new(Heap) ObjectX(xyz)と書く。ところが、std::vectorやstd::stringとかは内部でデフォルトのnewを実行する。こういった類のクラスに任意の領域を割り当てるためには、Allocatorクラスを用意する必要がある。省略しているが、Allocatorは、下記のような感じでallocate、deallocateというメンバ関数を定義する。ここに自前のメモリ管理処理を実装するとよい。
詳しくは ココ などを参照。


template <class T> 
class Allocator {
public:
  Allocator(MyGC* gc);
  pointer allocate(size_type n, const void* hint = 0);
  void deallocate(pointer p, size_type n);
  size_type max_size() ;
};
 

文字列にwchar_tを使う

いわゆるC++の文字列stringは、basic_string<char>のtypedefである。なので、basic_string<wchar_t>を使えばよい。なお、上述のAllocatorを自前で実装した場合は、basic_string< wchar_t, char_traits<wchar_t>, MyAllocator<wchar_t> >という感じで定義する。ちなみにwchar_tを標準出力するためにwcoutという関数が用意されている。
|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|


統計・機械学習


計算機


プログラミング



Raspberry Pi


その他



工事中


関係ない話題


管理者用



プロフィール

但馬慶行
(TAJIMA Yoshiyuki)

機械学習とロボットを趣味で勉強中。
連絡先はトップページ