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;
}
}