如何在向量中填充值

时间:2013-10-12 04:40:44

标签: c++

我将矢量大小设置为2并尝试在输入值达到2后重新填充输入值。但我不知道该怎么做。

e.g

输出

a
b
输入c后输出

c
b

在我输入d后会输出

c
d

-

storeInfo.resize(2);//set the size
storeInfo.push_back(something);//put the value inside vector
//how to repopulate with values within the range after it reaches more than 2?

for(int i = 0; i< storeInfo.size(); i++) {
     cout << storeInfo[i];
}

3 个答案:

答案 0 :(得分:1)

storeInfo.resize(2);
int curIdx = 0;

while(1) {
  ... <set val somehow> ...
  storeInfo[curIdx] = val;
  curIdx = (curIdx + 1) % 2;
}

答案 1 :(得分:0)

您正在寻找的是FIFO(先进先出)结构。 std::deque符合这种模式(某种程度),但需要一些自定义处理才能完全按照您的要求进行操作。

如果您愿意/能够使用Boost,它会有circular buffer template

或者,如果您在编译时知道大小,也可以使用std::array(同样,它需要一些自定义处理来充当环/循环缓冲区。

答案 2 :(得分:0)

您可以将代码更改为:

storeInfo.insert(storeInfo.begin(), something);
storeInfo.resize(2);


for(int i = 0; i< 2; i++) {
      cout << storeInfo[i];
}