为向量索引赋值

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&lt;=arr.size()-1 只是r &lt; 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;

【讨论】:

以上是关于为向量索引赋值的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 unique_ptr 向量的赋值运算符

为指针向量赋值

是否为数组/向量插入调用了赋值运算符或复制构造函数?

将单行向量(数组)赋值转换为经典数组,C++ 转换为 C

R语言中关于for语句中向量循环赋值求助

根据堆叠条件为具有层次索引的 pandas DataFrame 赋值