【发布时间】:2021-04-11 05:40:45
【问题描述】:
这是我的代码的一部分。我通过两种不同的方式为向量 v 赋值。虽然使用 k[0]=a 和 k1=b 可以正常工作,但是当我使用 push_back 函数时,向量 k 返回值 0。这两者有什么区别?
class Solution{
public:
vector<int> sumClosest(vector<int>arr, int x)
{
// code here
int l=0,r,dif=INT_MAX,a,b;
vector<int> k(2);
r=arr.size()-1 ;
while((l<r) and (l>=0) and (r<=arr.size()-1))
{
if(abs(arr[l]+arr[r]-x) <dif)
{
a=arr[l];
b=arr[r];
dif=abs(arr[l]+arr[r]-x);
}
if((arr[l]+arr[r]) <x)
l++;
else r--;
}
k.push_back(a);
k.push_back(b);
cout<<k[0]<<" "<<k[1]<<endl;
k[0]=a;
k[1]=b;
cout<<k[0]<<" "<<k[1]<<endl;
return k;
}
};
【问题讨论】:
-
push_back增加向量的大小并修改最后的索引值,而直接索引分配则不会。 -
r<=arr.size()-1只是r < arr.size()。 -
@김선달 增加向量大小在这里没有帮助。
-
@sweenish r 不影响向量元素值
-
声明时,
k的大小为 2。前两个元素初始化为 0。push_back()向k添加新元素。k现在的大小为 4,因为有 2 个 push_backs。