c++学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

C++学习记录

  • 前言
    • 0. clion基础环境配置
    • 0.1 Clion创建c++头文件并在其中构建类供主程序调用
    • 0.2 ubuntu编译安装opencv
    • 1.hello world
    • 2.基本数据类型
    • 3.typedef 声明
    • 4.枚举类型
    • 5.变量定义
    • 6.变量作用域
    • 7.定义常量
    • 8.修饰符类型
    • 9. cout用法
    • 10 vector操作
    • 11数据类型转换
    • 12 延时函数
    • 13 字典map的使用方法
    • 14 文件写入
    • 15 获取毫秒级时间
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

c++基础内容学习记录,所有内容来自菜鸟教程,均为c++最简单的概念。
菜鸟教程网址:https://www.runoob.com


提示:以下是本篇文章正文内容,下面案例可供参考

0. clion基础环境配置

https://blog.csdn.net/qq_26388117/article/details/114066907

0.1 Clion创建c++头文件并在其中构建类供主程序调用

(1)在当前项目下创建include文件夹,在include下创建头文件,并在cmakelist中导入该文件夹
c++学习_第1张图片
(2)在创建的头文件中定义类以及相关的类变量与类方法
c++学习_第2张图片
(3)在主程序中调用该类及对应的方法
c++学习_第3张图片

0.2 ubuntu编译安装opencv

https://www.cnblogs.com/tzbubble/p/12901017.html

1.hello world

#include 
using namespace std;
// main() 是程序开始执行的地方
int main()
{
   cout << "Hello World"; // 输出 Hello World
   return 0;
}

2.基本数据类型

c++学习_第4张图片数据类型的取值范围:
c++学习_第5张图片

初始化基础变量:

// 初始化字符串
string str;

3.typedef 声明

功能说明:
您可以使用 typedef 为一个已有的类型取一个新的名字。

typedef int feet;	//feet等价于int类型
feet distance;

4.枚举类型

功能说明:
枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。
创建枚举,需要使用关键字 enum。枚举类型的一般形式为:

enum color { red, green, blue } c;
c = blue;  // c的值为2

5.变量定义

c++学习_第6张图片

int d = 3, f = 5;           // 定义并初始化 d 和 f
byte z = 22;                // 定义并初始化 z
char x = 'x';               // 变量 x 的值为 'x'

6.变量作用域

作用域是程序的一个区域,一般来说有三个地方可以定义变量:

  • 在函数或一个代码块内部声明的变量,称为局部变量。
  • 在函数参数的定义中声明的变量,称为形式参数。
  • 在所有函数外部声明的变量,称为全局变量。
    正常情况下全局变量与局部变量互不影响(变量名不同)
    当全局变量与局部变量的变量名相同时,局部变量会覆盖全局变量
#include 
using namespace std;
// 全局变量声明
int g = 20;
int main ()
{
    // 局部变量声明
    int g = 10;
    cout << g;
    return 0;
}

7.定义常量

说明:不能改变的量叫常量(编译器无法编译通过)

#include 
using namespace std;

#define LENGTH 10
#define WIDTH  5
#define NEWLINE '\n'
int main()
{
    int area;
    const int  LENGTHa = 20;
    const int  WIDTHa  = 5;
    const char NEWLINEa = '\n';
    area = LENGTH * WIDTH;
    cout << area;
    cout << NEWLINE;
    area = LENGTHa * WIDTHa;
    cout << area;
    cout << NEWLINEa;
    return 0;
}

8.修饰符类型

说明:
C++ 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。
修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int。
下面列出了数据类型修饰符:

  • signed
  • unsigned
  • long
  • short
    在写程序过程中根据实际要使用变量的范围决定采取哪个修饰符,用不好可能会出现数据溢出。
#include 
using namespace std;
/* 
 * 这个程序演示了有符号整数和无符号整数之间的差别
*/
int main()
{
   short int i;           // 有符号短整数
   short unsigned int j;  // 无符号短整数
   j = 50000;
   i = j;
   cout << i << " " << j;
   return 0;
}

9. cout用法

cout设置打印double或者float的精度

cout.precision(10);

10 vector操作

// 打印元素
for(int i = 0; i < csv_data.size(); ++i)
{
    for (int j = 0; j < csv_data[i].size(); ++j)
    {
        std::cout << csv_data[i][j] << " ";
    }
}

// 删除某一个值
//删除第一个元素
vector<int>::iterator iter_last = test.begin();
test.erase(iter_last);

// 删除最后一个元素
vector<int>::iterator iter_last = test.end()-1;
test.erase(iter_last);

// 在vector最后增加一个元素
test.push_back()

11数据类型转换

// 数字转字符串
to_string(100)
// 字符串转数字(转整数)
stoi("10")
// 字符串转数字(转float)
stof("10.1")
// 字符串转数字(转double)
stod("10.1")
// 其他类似

12 延时函数

#include 
// 延时5秒
sleep(5)

13 字典map的使用方法

// 构建字典需要指明键值的数据类型
map<int,string> list1;

// 打印字典--需要构建同类型字典的迭代器(这种方式不好)
 map<string, double>::iterator iter;
   for(iter=traffic_param.begin(); iter!=traffic_param.end(); iter++){
       cout << "key: " << iter->first << " , value: " << iter->second << ".\n";
   }

// 打印字典(这种方式好-外加打印列表)
for(auto mapIt = cur_lane_id.cbegin(); mapIt != cur_lane_id.cend(); ++mapIt)
{
    std::cout << "printing data for " << mapIt->first << ":" << std::endl;
    for(auto vectIter = mapIt->second.cbegin(); vectIter != mapIt->second.cend(); ++vectIter)
    {
        cout << *vectIter << endl;
    }
}

// 初始化字典
for (const auto &lane: lane_info)
{
    cur_lane_id[lane.first] = {};
    cur_lane_id_for_flow[lane.first] = {};
}

// 删除字典某值
    #include 
    #include       // map
    #include    // string
    using namespace std;
    int main() {
        //创建并初始化 map 容器
        map<std::string, std::string>myMap{ {"C语言教程", "http://c.biancheng.net/c/"},
                                            {"Python教程", "http://c.biancheng.net/python/"},
                                            {"STL教程", "http://c.biancheng.net/stl/"} };
        //输出myMap容器存储键值对的个数
        cout <<"myMap size = " << myMap.size() << endl;
        //删除 myMap 容器键为 "Python教程" 的键值对
        int num = myMap.erase("Python教程");
        //输出 myMap 容器中剩余键值对的数量
        cout << "new myMap size = " << myMap.size() << endl;
        //输出 erase() 方法的返回值
        cout << "num = " << num << endl;
        return 0;
    }
// 查询字典某值
unordered_map<string, int> dist;
dist.count(x) == 1;//x元素存在
dist.count(x) == 0;//x元素不存在
    

14 文件写入

ofstream use_time_traffic_fd;
path += "use_time_traffic.txt";
use_time_traffic_fd.open(path, std::ios::out | std::ios::app);

15 获取毫秒级时间

#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    struct timeval time1;
    struct timeval time2;

    /* 获取时间,理论到us */
    gettimeofday(&time1, NULL);
    printf("s: %ld, ms: %ld\n", time1.tv_sec, (time1.tv_sec*1000 + time1.tv_usec/1000));


    cout << to_string(double((time1.tv_sec*1000 + time1.tv_usec/1000))/1000) << endl;

    exit(0);
}

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(c++,开发语言)