【问题标题】: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。

标签: c++ vector stl


【解决方案1】:

通过执行以下操作,您将创建一个大小为 2 的向量,并且向量中的每个元素都将被初始化为 0。

vector<int> k(2);

通过使用push_back 方法,您将一个新元素推到向量的后面,这有效地将向量的大小增加了1。

如果你想把两个值压入k[0]k[1],你必须把向量初始化为空,可以这样做:

vector<int> k;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多