可変量の要素を非常に効率的に追加できるコンテナが欲しいのですが、何かをトリガーできるので、最初から上書きを開始できます。これを使用すると、次のstd::list
ようになります。
while(whatever)
{
for(int i = 0; i < randNumber; ++i)
list.push_back( foo() );
//now want to reset
list.clear();
}
問題はlist.clear()
線形時間ですが、実際には最初に戻ってそこから上書きを開始したいと思います...vector[index++] = foo()
クリアを使用して置き換えてベクトルを試しましたindex = 0
が、予測randNumber
できないため、これは機能しません...何ができますか私はこれを達成するために代わりに使用しますか?
ところで、些細なデストラクタがあっても、ベクトルクリアは一定時間ではないようです。
struct rat
{
rat(int* a, int* b) : a_(a), b_(b) {}
int *a_;
int *b_;
};
int main(int argc, char **argv)
{
uint64_t start, end;
int k = 0;
vector<rat> v;
for (int i = 0; i < 9000; ++i)
v.push_back(rat(&k, &k));
start = timer();
v.clear();
end = timer();
cout << end - start << endl;
}