簡體   English   中英

我應該使用什么函數數據類型來返回 vector.push_back()?

[英]What function data type should I use to return a vector.push_back()?

string yesno(string holder ,vector<string> symptom)
{
    if(holder == "Y" || holder == "y"){
        return symptom.push_back("Y");
    }
    else if(holder == "N" || holder == "n"){
        return symptom.push_back("N");
    }
    else{
        cout <<"Wrong input" << endl;
        return symptom.push_back("-");
    }
}

所以這是我的功能,當我問用戶他們是否遇到某種症狀,然后詢問 Y/y 或 N/n 以獲得答案時。

函數中的if塊檢測 Y 或 N 的大寫和小寫,然后我將symptom.push_back()返回為“Y”或“N”,但出現此錯誤:

錯誤:無法轉換 'symptom.std::vectorstd::__cxx11::basic_string<char ::push_back(std::__cxx11::basic_string(((const char*)"Y"), std::allocator()) )' 從 'void' 到 'std::__cxx11::string' {aka 'std::__cxx11::basic_string'}|

std::vector.push_back()函數有一個void返回類型,所以也沒有辦法,你能將它返回到任何類型(因為它不返回任何東西)。

但是,有std::vector.back()函數,它返回對最后一個元素的引用; 因此,您可以在相關塊中進行有條件的push_back()調用,然后使用單個return 語句“檢索”被推送的元素:

string yesno(string holder, vector<string> symptom)
{
    if (holder == "Y" || holder == "y") {
        symptom.push_back("Y");
    }
    else if (holder == "N" || holder == "n") {
        symptom.push_back("N");
    }
    else {
        cout << "Wrong input" << endl;
        symptom.push_back("-");
    }
    return symptom.back();
}

此外,如評論中所述,您通過 value傳遞symptom向量,這意味着將使用本地副本,並且在函數返回時對其所做的任何更改都將丟失(副本將被刪除)。 您可能需要考慮通過引用傳遞symptom

string yesno(string holder, vector<string>& symptom) // Pass by reference!
{
    //...

暫無
暫無

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

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