《C++primer》

本文探讨了C++中模板参数的使用技巧,包括形参名称不一致的情况,并介绍了容器如vector的深度赋值特性及其验证方法。此外,还讨论了何时需要定义成员函数的const和非const版本,以及如何通过const引用提高代码效率。
摘要由CSDN通过智能技术生成

1、p539

关于什么时候需要将成员函数定义const和非const两个版本。习题14.23。

形参为const引用:首先,省去一次拷贝构造函数;然后,形参设为const,既可以传递const对象,又可以传递非const对象。

2、Page 531

同一模板的声明和定义中,形参的名字不必相同。

3、容器

容器可以用[]和.at()赋值。

//: c++代码测试(转)
//  vector赋值, 证明是深度赋值
vector<int>v1;
vector<int>v2;

//v1赋值
cout << "v1赋值" << endl;
for(int i = 0; i < 5; i++){
 v1.push_back(i);
}

//显示v1的元素
cout << "显示v1的元素" << endl;
vector<int>::iterator it1 = v1.begin();
for(; it1 != v1.end(); it1++){
 cout << *it1 << " ";
}
cout << endl;

//将v1 copy 到 v2
cout << "将v1 copy 到 v2" << endl;
v2 = v1;

//显示v2的元素
cout << "显示v2的元素" << endl;
vector<int>::iterator it2 = v2.begin();
for(; it2 != v2.end(); it2++){
 cout << *it2 << " ";
}
cout << endl;

//删除v1的元素
cout << "删除v1的元素" << endl;
v1.clear();
//显示v1的元素
cout << "显示v1的元素,看是否已经删除" << endl;
it1 = v1.begin();
for(; it1 != v1.end(); it1++){
 cout << *it1 << " ";
}
cout << endl;

//显示v2的元素, 看删除v1的元素后是否影响v2
cout << "显示v2的元素, 看删除v1的元素后是否影响v2" << endl;
it2 = v2.begin();
for(; it2 != v2.end(); it2++){
 cout << *it2 << " ";
}

深度赋值和浅度赋值

7、

在编写模板时,注意引入源文件。

8、 16.4.2

注意:什么叫做非类型形参。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值