考慮以下示例代碼初始化:C++ 11單元素矢量在一個函數調用
實施例:
void print(int n) {
cout << "element print\n";
}
void print(vector<int> vec) {
cout << "vector print\n";
}
int main() {
/* call 1 */ print(2);
/* call 2 */ print({2});
std::vector<int> v = {2};
/* call 3 */ print(v);
/* call 4 */ print(std::vector<int>{2});
return 0;
}
產生以下輸出:
element print
element print
vector print
vector print
爲什麼調用print
函數(在上面的例子中調用2)正在匹配函數接受單個值?我在這個調用中創建了一個向量(包含一個元素),所以如果它不匹配以向量作爲輸入調用print
?
這是部分討論的in an other question其中提供的解決方案適用於具有多個元素的向量。
重要提示:支撐初始化器列表是*無類型*,而不是'std :: initializer_list'。所以你的第一句話是錯誤的。 – Rakete1111