为向量索引赋值
Posted
技术标签:
【中文标题】为向量索引赋值【英文标题】:Assigning value to vector index 【发布时间】: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。
【参考方案1】:
通过执行以下操作,您将创建一个大小为 2 的向量,并且向量中的每个元素都将被初始化为 0。
vector<int> k(2);
通过使用push_back
方法,您将一个新元素推到向量的后面,这有效地将向量的大小增加了1。
如果你想把两个值压入k[0]
和k[1]
,你必须把向量初始化为空,可以这样做:
vector<int> k;
【讨论】:
以上是关于为向量索引赋值的主要内容,如果未能解决你的问题,请参考以下文章