Я установил свой векторный размер равным 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];
}
storeInfo.resize(2);
int curIdx = 0;
while(1) {
... <set val somehow> ...
storeInfo[curIdx] = val;
curIdx = (curIdx + 1) % 2;
}
вы можете изменить свой код:
storeInfo.insert(storeInfo.begin(), something);
storeInfo.resize(2);
for(int i = 0; i< 2; i++) {
cout << storeInfo[i];
}
То, что вы ищете, это структура FIFO (первая в первой части). std::deque
подходит для этой формы (вроде), но для выполнения того, что вы хотите, потребуется некоторая специальная обработка.
Если вы хотите/можете использовать Boost, у него есть шаблон кругового буфера.
В качестве альтернативы вы также можете использовать std::array
если вы знаете размер во время компиляции (опять же, для выполнения как пользовательского интерфейса, например, кольцевого или кольцевого буфера потребуется некоторая специальная обработка.