如何从外部函数引出向量?

问题描述

我试图编写一些代码,通过一个过时的函数digitSep()来获取数字的每个数字,然后将其放入向量中,在这种情况下为vector<int> digits;

知道为什么我不能在for循环中cout << digits[i]cout << digits.at(i)吗?


std::vector<int> digitSep(int d) {
    
    vector<int> digits;

    int right_digit;              //declare rightmost digit 

    while (d > 0) {
    right_digit = d % 10;         //gives us rightmost digit (i.e. 107,623 would give us '3') 
    d = (d - right_digit) / 10;    //chops out the rightmost digit,giving us a new number
    digits.push_back(right_digit);
    
    }
    return digits;               ///returns us a vector of digits 
}

int main() {
    
    //inputs
    int n; 
    cin >> n; 
    
    vector<int> digitSep(n);   //call the function here with user input n above 
    for (int i = 0; i < digitSep.size(); i++) {
        cout << digits[i] << endl;       ////This is the line that won't work for some reason
    }
    return 0;
}

解决方法

此行:

const digits = [0,1,2,3,4,5,6,7,8,9];

for (const digit of digits) {
  console.log(digit);
}

不调用名为vector<int> digitSep(n); 的函数。您需要这样做:

digitSep

然后在vector<int> digits = digitSep(n); 循环中,您必须这样做:

for

或简单地:

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

这里有两个问题

  1. vector<int> digitSep(n); 是一个构造函数调用,它初始化包含n个元素的向量,每个元素都初始化为零。
  2. 主函数对变量vector<int> digits;一无所知,因为它在std::vector<int> digitSep(int d)函数的本地范围内

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...