c++返回數組引用之四種方法

Posted by Jason Wong on March 28, 2019

#c++返回數組引用之四種方法

民國108年3月28日

//case 1:使用using別名
using arr = std::string[10];
arr &getString0(std::string (*str)[10]) {
    return *str;
}

//case 2:返回函式指標,指向容量爲10的數組
std::string (*getString1(std::string (*ptr)[10]))[10] {
    return ptr;
}

//case 3:尾置返回 
auto getString2(std::string (*ptr)[10]) -> std::string(*)[10] {
    return ptr;
}

//case 4:使用decltype,但是要手動指定輸入的類型
std::string d[10] = {"O"};
decltype(d) *getString3(std::string (*ptr)[10]) {
    return ptr;
}

int main() {

    std::string str[] = {"I", "Love", "Republic", "of", "China", "I", "Love", "Republic", "of", "China"};

    auto get0 = getString0(&str);
    auto get1 = getString1(&str);
    auto get2 = getString2(&str);
    auto get3 = getString3(&str);
    auto get4 = getString2(&str);
    std::cout << *(get0) << " " << *(*get1 + 1) << " "
              << *(*get2 + 2) << " " << *(*get3 + 3)
              << " " << *(*get4 + 4) << std::endl;
   return 0; 
}