我目前正在尝试创建一个读取函数字符串的函数(例如:" 6x ^ 2"所以为此我创建了这个函数,它接收一个输入的字符串,pos是字符串或递归函数的位置,取决于它运行的次数和向量,以便它可以在完成后返回它(然后通过sstream对其进行排序)但是我得到了一个范围错误。我添加了一个断点,但这并没有真正帮助它,继承代码:
var nums = UserDefaults.standard.array(forKey: "nums") as! [Int]
nums.append(1)
UserDefaults.standard.set(nums, forKey: "nums")
主要是这个:
vector<int> Recurofnum(const string& in, int pos, vector<int>& d) {
if (pos == 0) {
// if first time
if (isdigit(in.at(0))) { d.at(0) = in.at(0); posafterrecur++; pos++; Recurofnum(in, pos, d); }
// ^ if first letter is a number do it over again by adding 1 to pos and calling recurofnum again
else { d.at(0) = 1; posafterrecur++; return d; }
// ^if not the default is 1 for the first and only number in the vector
}
else // if not first time
{
if (isdigit(in.at(pos))) {
// ^ if digit at current position
if (pos == (in.size() - 1)) { return d; } // breakpoint
else { d.at(pos) = in.at(pos); pos++; posafterrecur++; Recurofnum(in, pos, d); }
/* ^ if first condition is true set the string's current position number to the vector
and call the function again to check for next position */
}
else { posafterrecur++; return d; } // if not return the vector
}
posafterrecur++;
}
我已经通过简单地给它一个定义的向量来检查它的排序算法,然后将它排序为一个int并将其排除,它完美无缺。
知道我做错了什么?