因爲這是我第一次嘗試使用向量指針,所以我對它進行了一些研究,並在我的程序中嘗試了它,但是它並沒有給我想要的結果,儘管它對它是封閉的。請如果我問一個糟糕的問題,請原諒我。C++向量指針
Q
C++向量指針
1
A
回答
3
您的錯誤是當您打印矢量的內容時,而不是您向其中添加數據時。
for (int i= 0; i<5; i++) {
if(storeData.empty()) {
cout <<"<no other records available>" << endl;
}
// error: storeData[i] may not be valid
else if(storeData[i].getCivIndex() == 0 && storeData[i].getXOrdinate() == 0 && storeData[i].getYOrdinate() == 0) {
cout << "<no other records available>" << endl;
}
else {
cout << "Civ Index:"<< storeData[i].getCivIndex() << ",at Sector("<< storeData[i].getXOrdinate() << "," << storeData[i].getYOrdinate() <<")" << endl;
}
}
即使向量包含更少,您仍然一直在閱讀5條記錄。在解引用它之前,你應該檢查矢量的大小,否則你正在讀取隨機存儲器,並導致未定義的行爲。
if(storeData.size() <= i) {
cout <<"<no other records available>" << endl;
}
+0
感謝您的幫助 – user3493435
1
if(storeData.size() > 5) {
storeData.resize(5);
}
首先我想在這裏你的意思if(storeData.size()<5)
否則下面的印刷肯定會失敗,因爲你只能訪問storeData[0]
,而您嘗試訪問其他人。
當你做resize
沒有第二個參數時,添加到向量中的項目將被默認構建。如果PointTwoD
結構不提供默認構造函數,則其數據成員將不會被初始化,這意味着它可能以隨機值結束。這就是爲什麼你有這些奇怪的數字。 (0也是可能的)。
的解決方案是定義一個默認構造pointTwoD
及其數據成員在初始化列表或call resize
with a second argument.
+0
已經設法解決它。謝謝你的建議 – user3493435
相關問題
- 1. C++ - 指向向量的指針數組?
- 2. C++向量和指針
- 3. 帶指針的C++向量
- 4. c + +指針的向量push_back
- 5. C++向量,指針等
- 6. C++向量指針問題
- 7. 訪問指向矢量的指針C++
- 8. C++指針分配(指向矢量)
- 9. C++指向矢量的指針
- 10. C++矢量指針指針
- 11. C指針,指向全局變量:不同的指針
- 12. 使用矢量指針指向對象的指針C++
- 13. C++矢量對象與指向對象的指針的向量
- 14. C++指定指向指針
- 15. C++強制指針指向指向基指向指針的指針
- 16. C++ - 指向數組的指針 - 指針
- 17. 指向C中的指針的指針
- 18. C++指向指針的指針
- 19. 指向C++指針的指針
- 20. 指針的向量
- 21. 指向矢量的指針不指向
- 22. 指向矢量的指針
- 23. 指向變量的指針
- 24. C++傳遞指向向量元素的指針而不是數組指針
- 25. C++新的std ::指針向量
- 26. C++:交換向量和指針失效?
- 27. C++向量和結構指針
- 28. 指針向量中的C++排序值
- 29. C++,向量,指針和對象混淆
- 30. C++向量,列表,指針和混淆
你需要的,如果可以縮短下來設置爲0。這很長,大多數人不會被打擾閱讀/回答 –
@PreetKukreti如果我縮短我的代碼,大多數人通常會感到困惑 – user3493435
這將幫助您嘗試縮小到[SSCCE](http:// sscce。 org /)以及其他。這是您可以通過在調試器中逐步執行程序輕鬆追蹤的問題。 –