如何解决如何从外部函数引出向量?
我试图编写一些代码,通过一个过时的函数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;
}
,
这里有两个问题
-
vector<int> digitSep(n);
是一个构造函数调用,它初始化包含n个元素的向量,每个元素都初始化为零。 - 主函数对变量
vector<int> digits;
一无所知,因为它在std::vector<int> digitSep(int d)
函数的本地范围内
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。