Как заселить значение в векторе

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];
}
Теги:

3 ответа

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

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

вы можете изменить свой код:

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


for(int i = 0; i< 2; i++) {
      cout << storeInfo[i];
}
  • 0
    Он должен будет либо изменить размер после каждой вставки (плохой выбор дизайна), либо создать оболочку, которая делает это после каждой вставки (лучше, но есть еще лучшие подходы).
  • 0
    большое спасибо. что помогает
0

То, что вы ищете, это структура FIFO (первая в первой части). std::deque подходит для этой формы (вроде), но для выполнения того, что вы хотите, потребуется некоторая специальная обработка.

Если вы хотите/можете использовать Boost, у него есть шаблон кругового буфера.

В качестве альтернативы вы также можете использовать std::array если вы знаете размер во время компиляции (опять же, для выполнения как пользовательского интерфейса, например, кольцевого или кольцевого буфера потребуется некоторая специальная обработка.

  • 0
    хорошо, спасибо за информацию
  • 0
    С deque, он должен был бы просто появиться каждый раз, когда он хочет выдвинуть
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню