我是靠谱客的博主 乐观魔镜,最近开发中收集的这篇文章主要介绍summary2 map(STL关联容器)、#if 0 #endif、try.....catch..... throw、虚函数和纯虚函数、C++多线程、GetScrollPos,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、map(STL关联容器)

map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。

pair的类型:pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。

使用map得包含map类所在的头文件:    #include <map> //注意,STL头文件没有扩展名.h

#include<map>
#include<string>
#include<iostream>
using namespace std;
int main()
{
    map<int, string>mapStudent;
    mapStudent.insert(pair<int, string>(1, "student_one"));
    mapStudent.insert(pair<int, string>(2, "student_two"));
    mapStudent.insert(pair<int, string>(3, "student_three"));
    map<int, string>::iterator iter;
    for (iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
    {
        cout << iter->first << " " << iter->second << endl;
    }
    system("pause");
    return 0;

}

https://baike.baidu.com/item/Map/5808503

value_type 就是stl容器盛装的数据的数据类型。

vector<int> vec;

vector<int>::value_type x;

上述两句代码,第一句是声明一个盛装数据类型是int的数据的vector,第二句是使用vector<int>::value_type定义一个变量x,这个变量x实际上是int类型的,因为vector<int>::value_type中声明的为int型。

https://blog.csdn.net/lg1259156776/article/details/77992822

2、wstring与string的区别

发现一个问题,VS2017中按照网上写的代码出来的都乱码,求解。

https://bbs.csdn.net/topics/392514423

 

3、#if 0 #endif

#if 0 #endif 可以解决 /*......*/ 嵌套注释出现的问题。

https://blog.csdn.net/raining_heart/article/details/8019535

#if 0  ,  #if 1  ,  #else   ,  #endif

https://blog.csdn.net/wwwsssZheRen/article/details/79077141

4、try.....catch.....    throw

使用  try  catch 的原因:人们设计出来的程序,做不到天衣无缝,在运行时总会出现各种意想不到的异常。因此,希望程序不仅能在正确的情况下正常运行,而且在程序有错误的情况下也能作出相应的处理,而不致使程序莫名其妙的终止崩溃,甚至出现死机的现象。比如做除法时分母遇到0,访问到了非法指针。

https://blog.csdn.net/Dengdew/article/details/80617344

https://blog.csdn.net/gukesdo/article/details/6901991#commentsedit

 

5、虚函数和纯虚函数,为什么定义虚函数?

https://blog.csdn.net/hackbuteer1/article/details/7558868

定义一个函数为虚函数,不代表函数为不被实现的函数。
定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。
定义一个函数为纯虚函数,才代表函数没有被实现。

定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。

6、C++多线程

join(): 阻塞主线程,等待当前线程执行完之后才继续执行后面的内容

detach(): 使子线程与主线程独立运行、并行执行,不会阻塞主线程

头文件:

#include <thread>

#include <Windows.h>

存在线程互斥:

头文件:

#include <thread>

#include <Windows.h>

#include <mutex>

mutex mu; //线程互斥对象

mu.lock();//同步数据锁

mu.unlock();//解除锁定

https://blog.csdn.net/dcrmg/article/details/53912941

7、CDialog与CDialogEx

CDialogEx类是CDialog的扩展类,基类就是CDialog,具备基类全部功能,并根据新系统需要增加了一些界面美化的功能。
比如修改对话框的背景颜色,标题栏的颜色,标题栏的位图,标题栏字体的位置和颜色,包括激活和非激活状态,对话框边界的颜色,对话框字体等。

两个在基础功能上没什么区别,但因为版本不同,MFC向导生成的类模板差异较大。

https://www.cnblogs.com/MakeView660/p/8662336.html

8、GetScrollPos,是获取指定滚动条中滚动按钮的当前位置的一种函数

static_cast<int> 是类型强制转换。

afx_msg宏表示声明的是一个消息响应函数。

SetWindowPos():设置按钮或其他控件、窗口的位置。

函数原型:

BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter,int X,int Y,int cx, int cy, UINT uFlags);

https://www.cnblogs.com/tmdsleep/p/9734812.html

 

 

最后

以上就是乐观魔镜为你收集整理的summary2 map(STL关联容器)、#if 0 #endif、try.....catch..... throw、虚函数和纯虚函数、C++多线程、GetScrollPos的全部内容,希望文章能够帮你解决summary2 map(STL关联容器)、#if 0 #endif、try.....catch..... throw、虚函数和纯虚函数、C++多线程、GetScrollPos所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部