nullptr
nullptr用以区分0和NULL,因为本质上NULL等同于0。
现有函数Test(),对其进行重载
void test(void* p)
{
std::cout << "arguement: void *" << std::endl;
}
void test(int a)
{
std::cout << "arguement: int " << std::endl;
}
倘若传入NULL。
test(NULL);
结果如图:
效果等同于传入:
test(0);
接下来,传入nullptr之后:
test(nullptr);
auto
auto主要用来推测一些复杂类型,简化写法。
现有容器vector,使用迭代器需如下写法
vector<int> vec{ 1,2,3,4,5 };
vector<int>::iterator ite = vec.begin();
//等同于
auto ite1 = vec.begin();
进行遍历时,可采用:
for (auto e : vec)
{
std::cout << e << std::endl;
}
/*
for (ite = vec.begin(); ite != vec.end(); ite++)
{
auto e = *ite; //赋值的操作
std::cout << e << std::endl;
}
*/
当数据量较大,且类型较大,如double,可采用引用写法
for (auto &e : vec)
{
std::cout << e << std::endl;
}