對於一個項目,我們有一個擴展網格,它加載了隨機塊。在這個塊中,我們放置了隨機對象。大塊的垂直和水平加載。玩家從0,0開始向上是0,-1向左則是-1,0。我想看看是否加載了一個塊。因爲該區域正在擴大,所以陣列不是一個選項,所以我在矢量選項中進行lookee。但向量不能有negative索引。我如何存儲一個網格(有2個可能的負值)和一個布爾值。我應該創建一個具有3個變量(2個整數和一個布爾值)的類,還是有其他選項,我可以使用某種具有負值的多維向量。具有布爾值的Cpp網格
2
A
回答
2
你可以使用一個map
,例如:
typedef std::pair<int, int> coord;
typedef std::map<coord, bool> coord_bool_map;
用法:
coord_bool_map m;
m[coord(-1, -3)] = true;
+0
如何在一個類中包含這個解決方案(我認爲它非常漂亮),以便我們能夠爲它定義一個接口? (例如'chunk :: is_loaded()'或者類似的東西) – RichouHunter
+0
嗯,我想我不會這麼做,但這只是個人的品味。東西*是地圖,爲什麼不保留已經提供的界面? – alain
0
但是向量不能有負指標
沒有,但你可以翻譯指數與抵消。比方說,你有大小5的載體,其應該代表idices的一個維柵格從-2:... 2:
std::vector<T> grid = std::vector<T>(5);
int offset = 2; // the offset, also index of origin
int start = -offset; // first index
int end = grid.size() - offset // one past last index
// example use
int index = -1;
T element_at_index = grid[index + offset];
甲std::deque
可能是從正面側擴大容器更有效。
當您展開正面時,請記得更新偏移量。
如果使用向量(或deques)向量,則需要兩個維度的偏移量。
相關問題
- 1. 具有默認值的可爲空布爾值或布爾值?
- 2. 在具有布爾值
- 3. 具有布爾值的奇怪行爲
- 4. 使工具欄具有網格佈局
- 5. Dojo網格布爾列
- 6. CPP如何在無符號整型值中使用布爾值?
- 7. 帶有布爾值的sqlite?
- 8. Excel:在第二列找到具有布爾值的最小值
- 9. CGAL的網格布爾操作
- 10. 布爾型網格的隨機指數
- 11. 具有多值的Kendo UI網格
- 12. 布爾(布爾)值切換
- 13. 具有布爾值的單元格不使用PHPExcel檢索TRUE和FALSE
- 14. 來自php網站的java布爾值
- 15. 與sqlite的布爾的布爾值
- 16. Option的非嚴格評估[布爾值]
- 17. 具有布爾值的switch case的奇怪行爲
- 18. 具有布爾返回值的pl/sql函數的OracleType?
- 19. 布爾值沒有改變
- 20. 布爾如何在Python中格式化布爾值?
- 21. 找到布爾網格多邊形
- 22. 具有空單元格的Java網格佈局
- 23. ruby是否具有布爾值的數組求和方法?
- 24. 具有權重或偏差的隨機布爾值
- 25. 具有多個布爾值的排名系統
- 26. 具有多個真實返回值的SSRS布爾參數
- 27. NHibernate的LINQ其中具有布爾值條款
- 28. Python如何處理具有多個條件的布爾值?
- 29. 反序列化具有空屬性的布爾值?
- 30. 布爾var具有不同的值,然後查詢填充它?
'std :: tuple' ?? – CinCout
@aviginsburg其不斷擴張,其基本限於最小/最大可能的浮動價值。基於玩家的x,y位置(如果玩家移動超過20 x,新的chunck),Chuncks會被加載/銷燬。 –
用代表座標的鍵的'std :: map'如何? –