我递归地调用一个函数作为参数传递一个子串,它始终从当前字符串的开头一直到一个位置.如果我使用C,我可以将指针传递给字符串的第一个位置,然后是必要的长度.不过,我想用这个类来达到相同的效果string.可能吗?如果我使用const,编译器是否足够聪明,可以自行进行优化?更好的是,有没有办法自行检查编译器是否实际复制了参数或传递了引用?
我的问题是在编写了下面的代码之后推动的,该代码在poj 上通过问题Alphacode的测试,一旦有人使用atoi而不是atof.
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <string>
using namespace std;
map<string, int> cache;
bool valid_character_number(string a) {
return 0 < stoi(a.substr(a.size() - 2, 2)) && stoi(a.substr(a.size() - 2, 2)) <= 26;
}
bool zero_last_digit(string a) {
return a[a.size() - 1] == '0';
}
bool zero_before_last_digit(string a) {
return a[a.size() - 2] == '0';
}
int decodings(string a) {
if (a.size() == 0)
return 1; …Run Code Online (Sandbox Code Playgroud)