天哪,关于vector的reserve问题,怎么会不一样呢
template<typename T>
void PrintTick(vector<T> t)
{
cout<<"不重新分配空间,可以插入容器中的最大个数:"<<t.capacity()<<endl;
}
int main()
{
//定义一个初始包含5个int型的向量
vector<int> vec2(5);//初始化为0
PrintTick<int>(vec2);
vec2.reserve(100);//设置最小存储空间
cout<<"不重新分配空间,可以插入容器中的最大个数:"<<vec2.capacity()<<endl;这里是100
PrintTick<int>(vec2);//这里居然是5,难道我的编译器有问题,还是代码有问题
}
而当模板函数改为下面时
template<typename T>
void PrintTick(vector<T>& t){//加了个引用
cout<<"不重新分配空间,可以插入容器中的最大个数:"<<t.capacity()<<endl;
}
就正确了。
这是为神马啊?
[解决办法]
楼主请补课拷贝构造函数。