c++中using的几种用法

最近在使用中,发现了一种以前没学过的using用法,于是在这里,将using的几种用法总结一下。

先来说说我新学会的一种用法,就是起别名,我们都知道typedef可以给我们起别名,using也可以,用法如下

1.using a = pair<int,int>,类似于这样的用法。

当然还有我们熟知的几种用法

2.可以引入命名空间

using namespace std ;

using std::cout;

在这里,我们再来说一下为什么要使用命名空间,举个例子,现在有一个学校,学校里有各种班级年级,现在校长(编译器)捡到一张身份证,需要人认领,叫张三,那么这个学校里有很多重名的人,怎么确定是哪个班的张三,找不到,校长就会疯了,这时如果知道是哪个班级,那么我们就确定了是谁,这时我们发现是二年三班的张三,那么这时就找到了,这个年级班级就是命名空间。我们引入命名空间的概念就是c++为了避免命名冲突的一种机制。

3.可以改变基类在子类中访问权限

class a
{
 public:
   void test(){
cout << "" << endl;
}
private:
    fun(){}

};

class b::protected a
{
 public:
      using a::test;

    };

如果我们直接继承的时候,基类中的fun为私有成员,子类没有权限去用,但是using之后就可以使用了。

还有一种使用,就是如果我们基类中和子类出现同名函数时,基类中的同名函数在使用时会被隐藏,那么我们有一种办法,就是在子类中将基类中的同名函数重写

class a
{
  public:
        void test(int a)
        {cout << "a" << endl;}

};

class b::public a
{
public:
        using a::test;
        void test(){}

};

,可这样太麻烦了,于是我们用上面的方法便很容易就可以使用基类的函数,然后要注意,using 这样用的时候,后面的函数只写名字,不加形参。

C++,map是一种关联容器,它将键和值一一对应,可以通过键快速查找值。map的find函数用于查找指定键是否存在,并返回对应的迭代器。 以下是map的find函数的语法: ```c++ map_name.find(key); ``` 其,map_name是map的名称,key是要查找的键。find函数的返回值是一个迭代器,如果找到了指定的键,则返回指向该键值对的迭代器;如果没有找到,则返回指向map末尾的迭代器。 以下是一个示例代码,演示如何使用map的find函数: ```c++ #include <iostream> #include <map> using namespace std; int main() { map<string, int> phone_book; phone_book["Alice"] = 123456; phone_book["Bob"] = 234567; phone_book["Charlie"] = 345678; // 查找键为 "Bob" 的值 map<string, int>::iterator it = phone_book.find("Bob"); if (it != phone_book.end()) { cout << "Bob's phone number is: " << it->second << endl; } else { cout << "Bob's phone number not found." << endl; } // 查找键为 "David" 的值 it = phone_book.find("David"); if (it != phone_book.end()) { cout << "David's phone number is: " << it->second << endl; } else { cout << "David's phone number not found." << endl; } return 0; } ``` 输出结果为: ``` Bob's phone number is: 234567 David's phone number not found. ``` 在这个示例代码,首先创建了一个名为phone_book的map,用来存储人名和电话号码。然后通过[]运算符将几个名字和电话号码添加到map。 接着使用find函数查找键为"Bob"和"David"的电话号码。对于"Bob",找到了对应的键值对,输出了电话号码;对于"David",没有找到对应的键值对,输出了提示信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值