C++的一些疑惑点整理及解决

一、lower_bound upper_bound equal_range

操作 效果
upper_bound(key) 返回键值大于key的第一元素
lower_bound(key) 返回键值大于等于key的第一元素
equal_range(key) 返回键值等于key的元素区间
/* 
equal_range:接受一个关键词,返回一个pair对组
		若关键词存在,第一个迭代器指向第一个与关键词匹配的元素,第二个指向最后一个匹配元素之后的位置
		若未找到匹配,则两个迭代器相等,都指向关键词可插入的位置。
*/

二、符号表

const
C语言
C++语言
修饰的是只读变量 本质是变量 可以通过地址访问进行修改
是一个真正的常量 放在符号表中 除非对const常量进行取地址或者extern时才会分配空间

三、delete一个类与静态成员变量和静态成员函数的情况

#include <iostream>
using namespace std;
class cla
{
    static int n;
    int k = 0;
public:
    cla() { n++; }
    ~cla()
    {
        n--;
        cout << "~cla" << endl;
    }
    static int get_n()
    {
        return n;
    }
};

int cla::n = 0;

int main(int argc, char const *argv[])
{
    // cla *p = new cla;
    // delete p;
    cout << "n=" << cla::get_n() << endl;
    //cout << p->Mytry() << endl;
    cout << "hhh" << endl;
    return 0;
}

1.当delete时,析构就会调用
2.就算没有构建类的时候,也能访问到静态成员变量和静态成员函数

四、::toupper

toupper:是把小写变成大写的函数

::这个前面为什么没有命名空间或者std?
问了一位大佬,;;这个是全局的命名空间,比std的范围还要大,所以toupper可以在外部直接使用,在局部需要加上::

五、push和reserve

push会新建容器,把之前存储的类,进行拷贝构造
emplace是原地构造,不需要吧之前存储的类拷贝构造,
这两者的共同点是,本次传入的类需要拷贝构造

猜你喜欢

转载自blog.csdn.net/m0_52592798/article/details/126063138