簡體   English   中英

將任意模板向量作為函數參數傳遞 C++

[英]Passing arbitrary-templated vector as function argument C++

對不起,如果這是微不足道的事情,它也可能不是很重要,但我只是好奇,我還找不到答案。

在 C++ 中,我正在創建函數來評估向量中的某些內容,結果是雙倍,但我希望該函數對向量和向量都有效。 我采用的解決方案是過載,如本展示簡單示例所示:

double silly_example(vector<int> &vec){
    return vec[0] + vec[1];
}
double silly_example(vector<double> &vec){
    return vec[0] + vec[1];
}

但是,對於所有函數來說,重載函數的主體沒有區別。 如上所述,結果是雙倍,計算使用雙倍。 如果傳遞了向量,則 int 成員無論如何都會轉換為 double。 那么有沒有辦法以某種方式避免重載這些函數中的每一個,而只是告訴編譯器這里的模板並不重要,只要它是數字的? 我希望像這樣:

double wished_form(vector<auto> &vec){
    return (double) vec[0] + (double) vec[1];
}

我知道汽車不能那樣工作,這只是為了展示我的意思:有沒有像這樣的方式將兩個重載函數合並為一個?

如果這是微不足道或愚蠢的,謝謝和抱歉。

這很簡單:

template <class T>
double wished_form(const vector<T>& vec) {
    return (double) vec[0] + (double) vec[1];
}

如果T不可轉換為double ,則會發生編譯時錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM