vector.push_back() 和 Vector[index] 之类的插入元素有什么区别?

what is the difference between vector.push_back() and inserting element like Vector[index]?

class Solution {
public:
    vector<int> getConcatenation(vector<int>& nums) {
        
      int n=nums.size();
        vector<int> ans(2*n);
        for(int i=0;i<2*n;i++)
        {
            if(i<n)
            {
                ans.push_back(nums[i]);
            }
            else
            {
                ans.push_back(nums[i-n]);
            }  
        }
        return ans;
        
    }
};

上面的代码没有给出适当的答案。

虽然下面的代码工作正常。

class Solution {
public:
    vector<int> getConcatenation(vector<int>& nums) {
        
      int n=nums.size();
        vector<int> ans(2*n);
        for(int i=0;i<2*n;i++)
        {
            if(i<n)
            {
                ans[i]=nums[i];
            }
            else
            {
                ans[i]=nums[i-n];
            }  
        }
        return ans;
        
    }
};

当你创建向量时你已经指定了一个大小(通常不是用向量完成)所以你的向量已经填充了已设置为 0 的整数。所以当你使用 ans[i] = nums[i]; 时你只是在编辑向量中已存在的元素之一。

通常当你创建一个向量时,你通过vector<int> ans;vector<int>* ans = new vector<int>();(如果你想在堆上创建它)将它创建为一个空向量,然后向它添加一个新元素使用 ans.push_back(value); 会将元素添加到向量的 back/end。