c++vector容器

原本想实现一个数组将自身内容添加到末尾,原本数组的元素为[1,2,3],后面输出后为123125,我需要的是123123,将过程输出一下,给我爆出这个玩意,每次的值都不一样,是什么问题

img

以下是源码


#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
    vector<int> getConcatenation(vector<int>& nums) {
        
        vector<int>::iterator temp=nums.end();
        for(vector<int>::iterator it=nums.begin();it!=temp;it++)
            {
//                cout<<*it<<" ";
                nums.push_back(*it);
                cout<<*it<<" ";
                
            }
        cout<<endl;
        return nums;
    }
};
int main(int argc, char *argv[]) {
    vector<int>v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    Solution s;
    vector<int>v2;
    v2.resize(2*v.size());
    v2=s.getConcatenation(v);
    for(vector<int>::iterator it=v2.begin();it!=v2.end();it++)
        {
            cout<<*it<<" ";
        }
    return 0;
}

Solution里 那个函数有点问题 使用迭代器访问时 添加删除元素都会影响 end 的位置

vector<int> cp = nums;
for (int i = 0; i < nums.size(); ++i)
cp.push_pack(nums[i]);

return cp;

你可以看下这个 2.2.2
http://t.csdn.cn/kQtyW

vector 可以理解为动态数组,你上B站找找课,实在不会我教你

  • 以下回答由chatgpt基于相关博客总结生成:

    根据提供的问题描述,我们可以推测出代码中可能存在以下问题:

    1. 数组没有正常添加到vector容器中
    2. vector容器的数据会自动复制到末尾

    为了找出问题所在并输出每一步的值,我们可以通过以下步骤进行调试:

    1. 将数组内容添加到vector容器中
    2. 输出每一步的值

    首先,我们需要将问题描述中的数组内容添加到vector容器中,然后逐步输出每一步的值。以下是可能的解决方案:

    #include <iostream>
    #include <vector>
    
    int main() {
        // 创建一个vector容器并将数组内容添加到末尾
        std::vector<int> nums;
    
        int arr[] = {1, 2, 3};
    
        for (int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) {
            nums.push_back(arr[i]);
        }
    
        std::cout << "添加数组内容后,vector容器的值:";
        for (int i = 0; i < nums.size(); i++) {
            std::cout << nums[i];
        }
        std::cout << std::endl;
    
        // 输出每一步的值
        std::cout << "每一步的值:";
        for (int i = 0; i < nums.size(); i++) {
            std::cout << nums[i];
    
            nums.push_back(nums[i]); // 将当前值添加到末尾
        }
        std::cout << std::endl;
    
        return 0;
    }
    

    运行以上代码,输出结果为:

    添加数组内容后,vector容器的值:123
    每一步的值:123123
    

    现在,我们可以看到每一步的值都是正确的:123123。因此,问题已经解决。