我在向量中插入带有push_back的元素。我想读取FIFO中的数据并使用指定为矢量开头的迭代器。是否还有其他方法可以在向量中读取FIFO中的数据?
答案 0 :(得分:5)
您可以使用std::deque()
及其pop_front()
方法。
答案 1 :(得分:0)
代码如下:
auto value = myvector[0];
myvector.erase(myvector.begin());
但是,从开头(或介于两者之间)删除元素的速度很慢,因为它必须复制整个数组。但访问速度很快:vector
允许在O(1)中随机访问(即通过任何显式索引进行访问)(即,持续访问时间,即非常快)。
但是另一个容器结构而不是vector
可能对您更有意义,例如list
或deque
。一些STL实现(或其他框架)也有类似rope
的东西,在许多情况下是两个世界中最好的。
答案 2 :(得分:0)
您可以像访问数组元素一样访问向量的元素:
std::vector<std::string> vec;
// Excluded: push items onto vec
for (int i = 0; i < vec.size(); ++i) {
// Example:
std::cout << vec[i];
}
答案 3 :(得分:0)
没有什么特别需要注意的。要插入,请使用
push_back
,要提取,您需要以下内容:
if ( !fifo.empty() ) {
ValueType results = fifo.front();
fifo.erase( fifo.begin() );
}
(在尝试删除之前不要忘记检查是否为空 元素。)
要记住的重要一点是push_back
和。{
在某些情况下erase
可以使迭代器无效,所以你不能
想要将迭代器保持在底层向量中
周围。