запись целочисленного ввода в векторный контейнер в C ++ - PullRequest
3 голосов
/ 15 февраля 2011

аналогично мы делаем в массиве

for (.....)
  cin>>a[i];

, как мы можем сделать это, используя векторы.я объявил вектор целых чисел

vector<int> v;

теперь мне нужно взять входные данные из консоли и добавить их в vector.я использую вектор, потому что я не знаю предела.

Ответы [ 6 ]

3 голосов
/ 15 февраля 2011

Если вектор не инициализирован с начальной емкостью, используйте что-то вроде этого:

int temp;
for (...) {
    cin >> temp;
    v.push_back(temp);
}
2 голосов
/ 15 февраля 2011

Чуть более компактные версии:

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

std::istream_iterator< int > iterBegin( std::cin ), iterEnd;

// using the range constructor
std::vector< int > vctUserInput1( iterBegin, iterEnd );

// using the copy & back_inserter
std::vector< int > vctUserInput2;
std::copy( iterBegin, iterEnd, std::back_inserter( vctUserInput2 ) );
2 голосов
/ 15 февраля 2011

Чтобы вставить целое число в вектор из консоли и распечатать все:

int input;
vector<int> v;
while(cin >> input){
 v.push_back(input);
}

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

И вектор также позволяет вам распечатать максимальный размер с помощью:

cout << v.max_size()<<endl;
1 голос
/ 15 февраля 2011

Попробуйте это

std::copy( std::istream_iterator<int>(std::cin),
            std::istream_iterator<int>(),
            std::back_inserter( v ) );

См. здесь

0 голосов
/ 26 января 2019

Небольшая программа для ввода данных от пользователя через вектор в c ++

#include <bits/stdc++.h>
using namespace std;

int main()
{
    vector<int> v1;
    int input;
    cout<<"Enter elements in vector";
      for (int i=0;i<10;i++)
       {
         cin>>input;
         v1.push_back(input);
       }

       cout<<"Elements in vector";
       for (int i=0;i<10;i++)
        {
          cout<<v1[i]<<"\n";
        }
         return 0;
 }
0 голосов
/ 15 февраля 2011

Самое простое решение с istream_iterator.Вам не нужен std :: copy, жесткий, потому что это жадный.Это будет читать все.Вместо этого используйте это:

std::istream_iterator<int> iter(std::cin);
vector<int> v;
for(.....)
   v.push_back(*iter++);
...