我在使用數組列表時遇到了一些麻煩。 因此,要清除事情我知道我不能有一個包含數組的std :: list。 我正在使用boost :: array能夠做到這一點。std :: boost :: arrays列表
目前,我對我的尋路算法所需的所有數據類型進行了原型測試,並測試了它們的速度和緩存一致性。
typedef boost::array<int,2> VertexB2i;
typedef std::list<VertexB2i> VertexList;
這些類型不用於尋路,他們只是更容易使用,那麼所有的真正的C++數組和國旗的探路者,所以他們只是用於生成導航網格。 (我也知道在這種情況下我可以使用stl :: pair來代替boost :: array,但是我想保持生成的數據與探測器數據儘可能相似,所以我不必處理完全兩個不同的接口的全部時間)
VertexList* vl = new VertexList();
vl->push_back({{8,28}}); // this does not work, why?
因此,儘管這兩個數據類型設置一些測試數據,我注意到,註釋行不工作,雖然這不會工作:
VertexList* vl = new VertexList();
VertexB2i ver1 = {{8,28}};
vl->push_back({ver1}); // works
所以總結一下: 反正有沒有先推出「VertexB2i」而沒有首先聲明它是分段的? 一般意見?
好,STD,不是STL。 – Griwes
vl-> push_back(ver1)); ??? –
哪個編譯器? GCC 4.5有一個初始化列表錯誤,而VC10根本不支持統一初始化。 –