我将矢量大小设置为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];
}
答案 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];
}