prevectorとは?

std::vectorと同じ作用を持ちますが、すべてが動的処理ではなく、先頭よりnバイトまでが固定長となります。
そして、std::vectorと同じメソッドが実装される「独自定義クラス」です。
ブロックチェーンの主に「スクリプトの処理」では、サイズが決まっている場合が多いため、
このprevectorを使うとパフォーマンスが向上いたします。
もちろん、固定長分を超えてしまっても大丈夫です。自動的にstd::vectorと同じ「可変長」になります。
そのため、固定長分を超えたらassertでプログラムが止まる……ではございません。案外、使いやすいです。

ただし……このprevector、C++03です。そのため、例えばpush_backとなります。
また、リストイニシャライザが使えません。このあたりはC++11以上になるように改良いたします。

型は以下の通りです。例えば、固定長28バイトのuint8_tなら、prevector<28, uint8_t>です。
template <unsigned int N, typename T, typename Size = uint32_t, typename Diff = int32_t>
class prevector

サンプルコード

prevector<28, uint8_t> test;
test.push_back('n');
test.push_back('e');
test.push_back('k');
test.push_back('o');
for(auto mi = test.begin(); mi!=test.end(); ++mi)
    ::fprintf(stdout, "%c\n", *mi);
	
□ 本ページをご覧いただきました方は、以下のページもよくご覧いただいております。
■ 集計中.....