如何在C++; 如果用户输入一个像4210的整数,那么如何将该整数的每个数字放在C++中的向量中?
,可以这样做:如何在C++; 如果用户输入一个像4210的整数,那么如何将该整数的每个数字放在C++中的向量中?,c++,vector,integer,digits,C++,Vector,Integer,Digits,,可以这样做: std::vector<int> numbers; int x; std::cin >> x; while(x>0) { numbers.push_back(x%10); x/=10; } std::reverse(numbers.begin(), numbers.end()); std::向量数; int x; 标准:cin>>x; 而(x>0) { 数字。推回(x%10); x/=10; } std::reverse(number
std::vector<int> numbers;
int x;
std::cin >> x;
while(x>0)
{
numbers.push_back(x%10);
x/=10;
}
std::reverse(numbers.begin(), numbers.end());
std::向量数;
int x;
标准:cin>>x;
而(x>0)
{
数字。推回(x%10);
x/=10;
}
std::reverse(numbers.begin(),numbers.end());
或者如果您喜欢使用std::string
,您可以使用:
std::vector<int> intVector;
int x;
std::cin >> x;
for (const auto digit : std::to_string(x)) {
intVector.push_back(digit - '0');
}
std::vector intVector;
int x;
标准:cin>>x;
for(常量自动数字:std::to_字符串(x)){
intVector.push_back(数字-'0');
}
这假设您的编译器可以使用C++11
我不明白为什么人们会建议这样的解决方案,比如来回转换到
int
,而你所需要的只是一个接一个的数字。。。对于用户以十进制表示的数字
要将“4321”
转换为std::vector{4,3,2,1}
最简单的方法是:
std::string input;
std::cin >> input;
std::vector<int> vec;
for (char const c: input) {
assert(c >= '0' and c <= '9' and "Non-digit character!");
vec.push_back(c - '0');
}
std::字符串输入;
std::cin>>输入;
std::vec;
for(字符常量c:输入){
断言(c>='0'和c我发现的最简单的方法是:
std::vector<int> res;
int c;
std::cin >> c;
while(c>0)
{
res.insert(res.begin(),c%10);
c/=10;
}
std::vector res;
INTC;
标准:cin>>c;
而(c>0)
{
res.insert(res.begin(),c%10);
c/=10;
}
你的意思是std::vector iv{4,2,1,0}??是的,但我希望最终用户输入这些数字,而不是程序员。是的,我知道push_back,但我如何循环一个整数来获取其中的每个数字?这是允许的吗?最简单的方法是将其作为字符串输入,然后迭代该字符串,将每个元素推到一个向量中。在分别获得每个数字之后,lexi就不再需要这些了Caly将其转换为整数表示向量。好吧,我会尝试。对于我的应用程序来说,如果加法顺序相反,这并不重要。将其更改为堆栈,或者将向量视为堆栈…“反转顺序”与您以后读取向量的方式有关。使用“numbers.emplace(numbers.begin(),x%10);”而不是“push_back()'以避免反转向量的开销。使用emplace(begin())
不会提高性能,反而会使性能更差,因为每个emplace
在开始时都需要移动所有先前添加的元素,从而使整个循环的复杂度为O(n^2),而std::reverse
的复杂度为O(1)我的编译器是在Ubuntu Linux上的GCC,它被更新到4.4.1版本。我通常用G++WALL-O来编译我的简单程序。如果不是,那么如何在C++上编译?@ MaMaHead Ag++STD= C++ 11—墙-O,应该工作得很好。这些数字代表线性反馈移位登记器中的抽头方程的幂,我将用数字作为。在一个位集中要进行异或运算的位的地址。所以,如果我想这样做,我认为转换成字符串是不正确的,我只希望它们是整数。谢谢。