c ++矢量插入和读取

时间:2013-10-17 10:39:12

标签: c++ vector fifo

我在向量中插入带有push_back的元素。我想读取FIFO中的数据并使用指定为矢量开头的迭代器。是否还有其他方法可以在向量中读取FIFO中的数据?

4 个答案:

答案 0 :(得分:5)

您可以使用std::deque()及其pop_front()方法。

答案 1 :(得分:0)

代码如下:

auto value = myvector[0];
myvector.erase(myvector.begin());

但是,从开头(或介于两者之间)删除元素的速度很慢,因为它必须复制整个数组。但访问速度很快:vector允许在O(1)中随机访问(即通过任何显式索引进行访问)(即,持续访问时间,即非常快)。

但是另一个容器结构而不是vector可能对您更有意义,例如listdeque。一些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可以使迭代器无效,所以你不能 想要将迭代器保持在底层向量中 周围。