Rah*_*ngh 3 c++ constructor return initializer-list stdinitializerlist
请解释此函数如何返回两个值。它采用一个数组并从数组中返回总和等于目标总和的两个数字。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int a = 0;
int b = 0;
for (int i=0; i<nums.size()-1; i++)
{
for (int j=i+1; j<nums.size(); j++)
{
if (nums[i] + nums[j] == target)
{
a = i;
b = j;
}
}
}
return {a, b};
}
};
Run Code Online (Sandbox Code Playgroud)
该类std::vector有一个构造函数,该构造函数带有模板特化的第一个参数,std::initializer_list<T>并且相应地接受一个初始化列表。
vector(initializer_list<T>, const Allocator& = Allocator());
Run Code Online (Sandbox Code Playgroud)
这样的构造函数称为初始化列表构造函数。
因此,当在 return 语句中使用相同类型的对象的花括号列表时,编译器尝试使用这个花括号列表作为构造函数的参数,该构造函数接受初始化列表来构建指定返回类型的返回对象。
实际上,在引擎盖下使用了以下操作:
std::vector<int> temporary_object = { a, b };
Run Code Online (Sandbox Code Playgroud)
因此该函数只返回一个类型std::vector<int>(函数的返回类型)的对象(容器),其中包含两个类型为 的元素int。
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |