C++的一些笔记(一)

描述

最近的一点C++小工具技巧总结

cout颜色等多样输出

对照表

std::string("\033[0m"), // 关闭属性
std::string("\033[1m"), // 设置高亮
std::string("\033[3m"), // 斜体
std::string("\033[4m"), // 下划线
std::string("\033[5m"), // 闪烁(无效)
std::string("\033[7m"), // 反显
std::string("\033[8m"), // 消隐
std::string("\033[30m"), // 设置前景色:黑色
std::string("\033[40m"), // 设置背景色:黑色
std::string("\033[31m"), // 设置前景色:深红
std::string("\033[41m"), // 设置背景色:深红
std::string("\033[32m"), // 设置前景色:绿色
std::string("\033[42m"), // 设置背景色:绿色
std::string("\033[33m"), // 设置前景色:黄色
std::string("\033[43m"), // 设置背景色:黄色
std::string("\033[34m"), // 设置前景色:蓝色
std::string("\033[44m"), // 设置背景色:蓝色
std::string("\033[35m"), // 设置前景色:紫色
std::string("\033[45m"), // 设置背景色:紫色
std::string("\033[36m"), // 设置前景色:深绿色
std::string("\033[46m"), // 设置背景色:深绿色
std::string("\033[37m"), // 设置前景色:白色
std::string("\033[47m"), // 设置背景色:白色
std::string("\033[nA"), // 光标上移n行
std::string("\033[nB"), // 光标下移n行
std::string("\033[nC"), // 光标右移n列
std::string("\033[nD"), // 光标左移n列
std::string("\033[y;xH"), // 设置光标位置(无效)
std::string("\033[2J"), // 清屏
std::string("\033[K"), // 清除从光标道行尾的内容
std::string("\033[s"), // 保存光标位置
std::string("\033[u"), // 恢复光标位置
std::string("\033[?25l"), // 隐藏光标
std::string("\033[?25h"), // 显示光标

使用举例

std::cout<<"\033[7m\033[5m"<<"Watch Out!"<<"\033[0m"<<std::endl;
std::cout<<"\033[0;32m"<<"Green standard"<<"\033[0m"<<std::endl;
std::cout<<"\033[1;32m"<<"Green high"<<"\033[0m"<<std::endl;

计时工具

C 库函数 clock_t clock(void) 返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。为了获取 CPU 所使用的秒数,您需要除以 CLOCKS_PER_SEC。

在 32 位系统中,CLOCKS_PER_SEC 等于 1000000,该函数大约每 72 分钟会返回相同的值。

#include<time.h>

clock_t t1 = clock();
std::cout<<t1<<std::endl;
clock_t t2 = clock();
std::cout<<t2<<std::endl;
std::cout<<t2-t1<<std::endl;
std::cout<<float(t2-t1)/CLOCKS_PER_SEC<<std::endl;

C++变量极大极小值

std::cout << "max(short): " << std::numeric_limits<short>::max() << std::endl;
std::cout << "min(short): " << std::numeric_limits<short>::min() << std::endl;
std::cout << "max(int):   " << std::numeric_limits<int>::max() << std::endl;
std::cout << "min(int):   " << std::numeric_limits<int>::min() << std::endl;
std::cout << "max(long):  " << std::numeric_limits<long>::max() << std::endl;
std::cout << "min(long):  " << std::numeric_limits<long>::min() << std::endl;

std::cout << "max(float): "<< std::numeric_limits<float>::max() << std::endl;
std::cout << "max(double): "<< std::numeric_limits<double>::max() << std::endl;
std::cout << "max(long double): "<< std::numeric_limits<long double>::max() << std::endl;

// print whether char is signed
std::cout << "is_signed(char): "<< std::numeric_limits<char>::is_signed << std::endl;
// print whether numeric limits for type string exist
std::cout << "is_specialized(string): " << std::numeric_limits<std::string>::is_specialized << std::endl;

变量类型转换

double a = 10.1;
double b = 9;
int delta = static_cast<int>(a - b);
std::cout<<delta<<std::endl;

vector删除

std::vector<int> v;
for (int i = 0; i < 10; i++) {
    
    
	v.push_back(i);
}
std::cout<<"before:"<<std::endl;
for (int i = 0; i < v.size(); i++) {
    
    
	std::cout<<v[i]<<" ";
}
std::cout<<std::endl;

   std::vector<int>::const_iterator iter_begin = v.begin() + 1;
   std::vector<int>::const_iterator iter_end = v.end() - 2;
   v.erase(iter_begin, iter_end); 	// 删除参数1和2之间的值
// v.erase(v.begin()+1, v.end() -2); // 效果一致

std::cout<<"after:"<<std::endl;
for (int i = 0; i < v.size(); i++) {
    
    
	std::cout<<v[i]<<" ";
}
std::cout<<std::endl;

线程同步运算

一个小例子

#include <iostream>
#include <thread>
#include <vector>

void addThread(int x) {
    
    
	x++;
	std::cout<<" add:"<<x<<std::endl;
}
int main(int argc, char** argv) {
    
    

	int m_threads_num = 4;

	std::vector<std::thread> thread_vec(m_threads_num);

	int x = 10;
    for (int i = 0; i < m_threads_num; ++i) {
    
    
        int start_index = 1080 / m_threads_num * i;
        int end_index = 1080 / m_threads_num * (i+1);
        thread_vec[i] = std::thread(addThread, x);
    }
    for (auto it = thread_vec.begin(); it != thread_vec.end(); ++it) {
    
    
        it->join();
    }

	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42156097/article/details/126998871