2017-04-15 5 views
1

要素の動的配列(std :: vector)を格納する必要があります。 これらの要素には、単一のポインタまたはポインタの配列を指定できます。ポインタまたはポインタの配列を動的配列に格納する

多次元配列はほとんどありません。ほとんどの要素が単一のポインタなので、多くの割り当てが行われるためです。

私はベクトルをシャッフルしたり、要素をランダムな位置に挿入したりしたいので、これを行いたいですが、ベクターのいくつかの要素を分けてはいけません。私は現在考えている何

は次のとおりです。

struct Element 
{ 
    bool isArray; 
    union 
    { 
     void* pointer; 
     std::vector<void*> pointers; 
    }; 
}; 

std::vector<Element> elements; 

は、他の良い選択肢はありますか?

+0

これを行うには何が必要ですか? – chbchb55

+0

リンカ内のコードとデータのチャンクの順序を簡単にランダム化します。いくつかのチャンクは、別のチャンクの前または後になければならないため、分離できません。 – kokole

答えて

0

ベクトルを保存する場合、要素の1つに新しいポインタを追加するたびに、ヒープの並べ替えが危険にさらされるため、要素の量によっては時間がかかる可能性があります。

要素structには、void *の代わりにboost :: anyを格納することをお勧めします。より安全で扱いやすく、それぞれを検索しやすくなりますポインタのクラス。

関連する問題