如图
我在一个函数中使用了vector,这个函数是需要重复使用的,那么我的这种写法会造成什么影响?
是不是在第二次调用此函数时vector的值不会改变了?
我需要怎么更改它以达到正常函数功能?
如图
vector<int> &count_chars(const string &s) {
static vector<int> res(27, 0);
for (int i = 0; i < s.size(); ++i)
++res[s[i] - 'a'];
return res;
}
将 res vector 声明为 static 之后,它的生存周期将会持续到整个程序的运行期间,而不是每次函数调用之间重新创建和销毁。这意味着,如果你多次调用 count_chars 函数,并且需要访问之前调用所累积的计数器,则每次函数调用都将修改 res vector 中的值,而不是从零开始重新计数。