Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将整数输入写入C+中的向量容器+;_C++_Vector_User Input - Fatal编程技术网

C++ 将整数输入写入C+中的向量容器+;

C++ 将整数输入写入C+中的向量容器+;,c++,vector,user-input,C++,Vector,User Input,同样,我们在数组中也是这样做的 for (.....) cin>>a[i]; 我们如何使用向量来实现这一点。我声明了一个整数向量 vector<int> v; 向量v; 现在,我需要从控制台获取输入,并在vector中添加附加输入。我之所以使用vector,是因为我不知道限制。如果vector未使用初始容量初始化,请使用类似以下内容: int temp; for (...) { cin >> temp; v.push_back(tem

同样,我们在数组中也是这样做的

for (.....)
  cin>>a[i];
我们如何使用向量来实现这一点。我声明了一个整数向量

vector<int> v;
向量v;
现在,我需要从控制台获取输入,并在vector中添加附加输入。我之所以使用vector,是因为我不知道限制。

如果vector未使用初始容量初始化,请使用类似以下内容:

int temp;
for (...) {
    cin >> temp;
    v.push_back(temp);
}

要从控制台向向量插入整数并打印所有内容,请执行以下操作:

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

for(int i = 0; i<v.size(); i++){
 cout<< v[i] <<endl;
}
int输入;
向量v;
同时(cin>>输入){
v、 推回(输入);
}

对于(int i=0;i稍微紧凑的版本:

#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 ) );
#包括
#包括
#包括
#包括
std::istream_迭代器iterBegin(std::cin),iterEnd;
//使用范围构造函数
std::vectorvctUserInput1(iterBegin,iterEnd);
//使用“复制和备份”插入器
std::vectorvctUserInput2;
std::copy(iterBegin、iterEnd、std::back_inserter(vctUserInput2));
试试这个

std::copy( std::istream_iterator<int>(std::cin),
            std::istream_iterator<int>(),
            std::back_inserter( v ) );
std::copy(std::istream_迭代器(std::cin),
std::istream_迭代器(),
标准:背部插入器(v);

您可以将其简化为仅创建向量并使用迭代器初始化它:

std::vector<int>  v(std::istream_iterator<int>{std::cin},
                    std::istream_iterator<int>{});
std::vector v(std::istream_迭代器{std::cin},
std::istream_迭代器{});

最简单的解决方案是使用
istream\u迭代器。
您不需要std::copy,因为这太贪婪了。它会读取所有内容。相反,请使用以下方法:

std::istream_iterator<int> iter(std::cin);
vector<int> v;
for(.....)
   v.push_back(*iter++);
std::istream\u迭代器iter(std::cin);
向量v;
对于(……)
v、 推回(*iter++);

在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;
 }
#包括
使用名称空间std;
int main()
{
向量v1;
int输入;

cout当输入的数量没有给定时,我们就开始这样编码

#include<iostream>
using namespace std;

#include<vector>

int main()
{
    int i ;
    vector<int> v;
    while(i != -1)
    {
        cin >> i;
        v.push_back(i);
    }
}
#包括
使用名称空间std;
#包括
int main()
{
int i;
向量v;
而(i!=-1)
{
cin>>i;
v、 推回(i);
}
}
/在上面的代码中,我一直在进行输入,直到用户没有输入-1。在您的问题中,必须给出一些条件,而不是输入的数量,如果给出了输入的数量,则很容易进行输入。这方面的代码是:/

for(i=0;i>i;
v、 推回(i);
}

您还可以动态分配数组,然后在向量中使用它

这就是你能做的

#include<bits/stdc++.h>
int main()
{
 int n;cin>>n;
 vector<int>v(n);
 for(int i=0;i<n;i++){
 cin>>v[i];
}
for(auto x:v){
cout<<x<<" "<<endl;
}
}

#包括
int main()
{
int n;cin>>n;
向量v(n);
对于(int i=0;i>v[i];
}
用于(自动x:v){

coutGreat response…直到你使用max_size。我相信maverick意味着用户将输入的整数的数量,在这种情况下,你使用一个向量,让它重新分配,然后处理内存中的电势和/或自己设置一个上限。max_size并没有告诉你任何有用的东西。我明白了。但是我认为现在最好让@maverick知道eExistence.max_size()或.capacity(),因为这可能是他对Vector的第一次挑战:)如果我误解了这个问题,我很抱歉..告诉他容量可能会有帮助(但可能不如大小);max_size没有用。在C中,我们不需要将其存储在临时变量中,然后将其复制到数组中。因此,我正在搜索一个没有临时变量且使用STL的答案。如果您喜欢STL,请使用@Eugen或Martin的答案。我两个都喜欢。即使向量的容量大于其大小,您仍然可以使用它。这是真的。我猜“初始容量”是误导性的。我的意思是,如果你知道项目的数量,并因此将容量初始化为该数量,你就不需要将其推回。你仍然可以使用cin>>v[I]。
容量不足,你还需要调整向量的大小。
for(;){cin>>tmp;v.push_back(tmp);如果(tmp==someValue)break;}如果您从键盘输入someValue,循环将关闭,可能与Hey Ravi重复,您需要初始化
int i
,然后在
while(i…)中使用它
。最好在代码格式方面花点功夫,这样会有回报。您可以提到,分隔符-1将作为最后一个元素被推入向量中。请不要发布建议使用
bits/stdc++.h
标题的答案!一些更好的缩进也是一种改进。
for (i=0; i<n; i++)
{
    cin >> i;
    v.push_back(i);
}
#include<bits/stdc++.h>
int main()
{
 int n;cin>>n;
 vector<int>v(n);
 for(int i=0;i<n;i++){
 cin>>v[i];
}
for(auto x:v){
cout<<x<<" "<<endl;
}
}