0

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

例如

输出

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];
}
4

3 回答 3

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

while(1) {
  ... <set val somehow> ...
  storeInfo[curIdx] = val;
  curIdx = (curIdx + 1) % 2;
}
于 2013-10-12T04:48:04.833 回答
0

您似乎正在寻找的是 FIFO(先进先出)结构。 std::deque适合那个模具(有点),但需要一些自定义处理才能完全按照您的要求进行。

如果您愿意/能够使用 Boost,它有一个循环缓冲区模板

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

于 2013-10-12T05:20:45.820 回答
0

您可以将代码更改为:

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


for(int i = 0; i< 2; i++) {
      cout << storeInfo[i];
}
于 2013-10-12T05:20:55.797 回答