我插入元素與push_back在向量中。我想讀取FIFO中的數據並使用迭代器分配給矢量的開頭。在矢量中有沒有其他方法讀取FIFO中的數據?C++向量插入和讀取
回答
您可以使用std::deque()
及其pop_front()
方法。
我沒有看到pop_front()。它是爲矢量定義的嗎? –
不在向量中,使用'std :: deque'而不是'std :: vector',它有前後兩個引用,它們可能會給你你想要的。 –
我在閱讀之前還要檢查它是否爲空。 –
的代碼將是:
auto value = myvector[0];
myvector.erase(myvector.begin());
然而,從一開始(或介於兩者之間)去除元件是緩慢的,因爲它必須整個陣列複製。訪問是快速的,但是:vector
允許O(1)中的隨機訪問(即通過任何顯式索引訪問)(即恆定訪問時間,即非常快)。
但是另一個容器結構而不是vector
可能對你更有意義,例如, list
或deque
。一些STL實現(或其他框架)也有類似rope
的東西,這在很多情況下都是兩全其美的。
您可以訪問vecotr的元素,就像你訪問數組中的元素:
std::vector<std::string> vec;
// Excluded: push items onto vec
for (int i = 0; i < vec.size(); ++i) {
// Example:
std::cout << vec[i];
}
沒有什麼特別要注意。要插入,使用 push_back
,提取,你需要的東西,如:
if (!fifo.empty()) {
ValueType results = fifo.front();
fifo.erase(fifo.begin());
}
(不要忘記嘗試刪除 元素之前檢查空)
重要的一點要記住的是那兩個push_back
和 在某些情況下erase
可以使迭代器無效,所以你不要 要保持迭代器進入底層向量掛在 左右。
- 1. C++向量和插入
- 2. 插入向量C++
- 3. STL向量,迭代器和插入(C++)
- 4. C++向量和列表插入
- 5. 在C++向量中插入
- 6. C++ unordered_map插入到向量
- 7. 將C++向量讀取和寫入文件
- 8. 插入向量
- 9. 函數從文件讀入向量C++
- 10. C#app.config讀取和寫入
- 11. c#NetworkStream寫入()和讀取()
- 12. C++從文件讀取向量
- 13. 從C++中讀取int值向量
- 14. 在隊列向量中插入C++
- 15. Visual C++無法編譯向量插入()
- 16. 插入元素爲2D向量C++
- 17. C++不能在向量中插入值
- 18. C++ std :: set插入無效讀取
- 19. 如何讀取向量的向量點 - C++
- 20. C++在特定位置的其他向量中插入向量
- 21. 讀取串行輸入到C變量
- 22. MongoDB全局鎖定:同時讀取和插入大量數據
- 23. 向Ocaml中的文件寫入和讀取自定義變量
- 24. 同時讀取和寫入向量導致異常
- 25. BlackBerry - 從持久對象向量中寫入和讀取
- 26. 讀取和寫入結構向量的文件
- 27. C#:向二進制文件寫入和讀取列表
- 28. 如何使用ODBC批量讀取或插入行? (在C或C++中)
- 29. 向量push_back僅插入0s
- 30. 插入到STL向量中
你想建立一個隊列嗎?即閱讀後你是否刪除了這些元素? – Henrik
是的我正在通過使用迭代器擦除功能刪除。 –
然後使用deque代替@Didac建議的向量。 – Henrik