【问题标题】:How to cout a vector from an outside function?如何从外部函数中计算出向量?
【发布时间】:2020-12-06 02:43:31
【问题描述】:

我正在尝试编写一些代码,通过 outisde 函数 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;
}

【问题讨论】:

  • main 中,没有名为digits 的变量。此外,您定义了一个名为 digitSep 的函数,但您从未真正调用它。注释说“调用函数...”,但注释所在的行实际上并没有调用任何函数(除非您计算向量的构造函数)。

标签: c++ function vector int return


【解决方案1】:

这一行:

vector<int> digitSep(n);

不调用名为digitSep 的函数。你需要做的:

vector<int> digits = digitSep(n); 

然后在for 循环中,你必须这样做:

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

或者简单地说:

for (int i : digits) {
    cout << i << endl;    
}

【讨论】:

    【解决方案2】:

    这里有两个问题

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-13
      • 1970-01-01
      • 2020-02-15
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多