原本想实现一个数组将自身内容添加到末尾,原本数组的元素为[1,2,3],后面输出后为123125,我需要的是123123,将过程输出一下,给我爆出这个玩意,每次的值都不一样,是什么问题
以下是源码
#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站找找课,实在不会我教你
根据提供的问题描述,我们可以推测出代码中可能存在以下问题:
为了找出问题所在并输出每一步的值,我们可以通过以下步骤进行调试:
首先,我们需要将问题描述中的数组内容添加到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。因此,问题已经解决。