打印容器元素有关问题

打印容器元素问题

#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
vector<int> twoSum(vector<int> &numbers, int target) 
{
vector<int> sum(2);  //此处定义了一个含有2个元素的容器
for (int i = 0; i != numbers.size(); i++)
for (int j = i + 1; j != numbers.size(); j++)
if (numbers[i] + numbers[j] == target)
{
sum.push_back(i + 1);
sum.push_back(j + 1);
break;
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> s{2,7,11,14};
vector<int> s2=twoSum(s, 13);     //结果赋给s2
cout << s2.size() << endl;       //打印容器长度为4,这是为什么?
for (int i = 0; i <s2.size(); ++i)
cout << s2[i] << endl;
return 0;
}


------解决思路----------------------
本来有两个元素,又push进两个
------解决思路----------------------
vector<int> sum(2) ::定义了2个整数元素的向量,没有给出初始值,因而其值不确定。 后面执行sum.push_back 操作,即将数据新加入向量sum中,所以程序中打印长度为4, 另外,如果将定义改为vector<int> sum; 即不会出现打印长度为4的情况。