使用引用形參返回額外資訊
阿新 • • 發佈:2019-01-30
一個函式只能返回一個值,但是呢,有時候函式需要同時返回多個值,引用形參為我們一次返回多個結果提供了有效的途徑:
來一個例子,直接上程式碼:
先說明函式功能:一個函式,返回string物件中的某個字元第一次出現的位置,同時得知該字元總共在string物件中出現的次數,函式中有詳細說明。
表面看似只完成一個任務:即返回了string物件中某個字元出現的第一個位置,但是由於我們用來統計次數的變數時一個引用形參,在函式外可以直接訪問,引用形參不會因為出函式作用域而消失;#include<iostream> #include<string> using namespace std; string::size_type FindChar(const string &s, char c, string::size_type &count) { auto ret = s.size(); //字串總長,來控制迴圈,同時初始化初始化ret count = 0; for (decltype(ret) i = 0; i != s.size(); ++i) //decltype獲取ret的型別 { if (s[i] == c) { if (ret == s.size()) //巧妙使用ret == s.size() 去控制字元C第一次出現,以後都不在統計 ret = i; ++count; //上邊if只是第一次進去一次,之後都不在進 以後遇到C都只加count } } return ret; } void Test() { string s1("lilililililililililili"); string::size_type Count = 0;; auto index = FindChar(s1,'l',Count); cout << "第一次出現的位置:" << index << endl; cout << "Count = " << Count << endl; } int main() { Test(); return 0; }
來自:C++Primer;