【问题标题】:A function that convert a number into a vector array in c++C++中将数字转换为向量数组的函数
【发布时间】:2020-09-05 23:36:16
【问题描述】:
vector<int> initialiser(long long int number)
{
    vector<int> numberArray(20);

    for (vector<int>::iterator it = numberArray.begin(); it != numberArray.end(); it++)
    {
        numberArray[*it] = number % 10;
        number /= 10;
    }

    return numberArray;
}

当这个函数被调用时(例如initialiser(123456),它返回一个零数组而不是这个数字的数组。

【问题讨论】:

  • 欢迎来到 Stack Overflow!听起来您可能需要学习如何使用调试器来逐步执行代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programsDebugging Guide
  • @NathanOliver 问题出在这一行 numberArray[*it] = number % 10;
  • 如果我输入任何整数而不是数字 % 10;它工作正常。
  • 请编辑您的问题以获取minimal reproducible example
  • 你可能想要*it = number % 10;

标签: c++ arrays function loops vector


【解决方案1】:
vector<int> numberArray(20);

最初,数组有 20 个零。

*it

这通过迭代器间接。因为所有值都是 0,所以这种间接方式将导致该值为零。

 numberArray[*it] = number % 10;

在这里,您修改向量的第一个元素,即numberArray[0],因为*it 为零(参见上一段)。

在以后的迭代中,您仍然会修改第一个元素,因为指向的元素的值始终为零。在上一次迭代中,您设置的值为零,因为输入的整数没有 20 位。

【讨论】:

  • Op 可能想要*it = number % 10;
  • 或:for(int&amp; digit : numberArray) { digit = number % 10; ...
猜你喜欢
  • 2011-08-15
  • 2013-10-29
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多