栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

C++基本语法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++基本语法

文章目录
  • 数据类型定义
    • 结构体
    • 数组
    • 列表和循环
    • 二维点和三维点
  • 指针和引用
  • 文件类型
    • 头文件
  • 常见运算
    • 逻辑运算
    • 连续不等式
    • 浮点运算
    • 字符串操作
  • 常见报错及解决方法

数据类型定义 结构体
// 定义一个结构体
struct struct1{
float abc;
}
数组
// 定义一个数组,每个元素是一个结构体
std::Vector list1; 
// 定义一个数组,每个元素是一个浮点数
std::Vector list1; 
列表和循环
//定义列表
//list和vector的区别:vector是一段连续存储空间,存取速度欧1,list是欧n
std::vector list1;
//定义一个固定长度列表(长度为5),并且将元素初始化为相同的值 (1)
std::vector list1 = std::vector(5,1)
//手动创建列表
std::vector list1 {1,2,3,4,5};
//按列表循环1
for (i=0;ixxx}
//按列表循环2
for (auto &i:list1){xxx}
二维点和三维点
#include "Eigen/Core"
// 定义2D点,初始化
typedef Eigen::Vector2f Point2Df;
Point2Df point(0,0);

// 定义2D点向量,2个点
template 
struct Point2D {
T x=0;
T y=0;
};
using Point2DF = Point2D
std::vector point_list = {{0,0},{0,0}}

// 定义3D点,初始化
Eigen::Vector3d point = Eigen::Vector3d(0,0,0)
// 定义3D点向量, 4个点
std::vector point_list = std::vector(4,Eigen::Vector3d(0,0,0))
指针和引用
// 根据地址取值,abc是一个地址(引用),存储了一个int值,打印地址
abc
// 把值取出来,并打印值
static_cast(abc)
文件类型
// 不同的文件类型和作用:
配置:abc.pt
对外接口:abc.proto
对外接口编译自动产生的头文件:abc.pb.h
源代码:abc.cc
头文件(和源代码对应):abc.h
头文件
// 引入头文件,必须用双引号括起相对路径,不能用单引号,C++单引号表示char。错误写法:#include 'abc/def/ggg.h'
#include "abc/def/ggg.h"
// .cc 或 .cpp 文件中用到的变量名xxx (private,私有成员变量) 需要在同名的 .h 文件中定义,一个.cc文件对应一个.h文件。
// 在 .cc 中引用非同名的 定义了变量名xxx (private)的.h文件是没用的。会报错:
error: 'xxx' was not declared in this scope
常见运算 逻辑运算
// 逻辑运算
// 多条件取或
if (a || b || c) {xxx}
// 多条件取与:使用 && ,而不要使用 & (按位与、取地址)
if (!a && !b && !c) {xxx}
连续不等式
// 连续比较(连续不等式)

C++不像python,不能使用连续比较:
比如想知道b是否在a和c之间,不能写成:

a < b < c

而是应该写成:

a < b && b < c

原因是:C++中 连续不等式存在优先级问题,第二种写法:a

python可以。

0 < 1 < 3 # 会返回True

这可以说是C++语言标准的缺陷

https://book.51cto.com/art/201204/327024.htm
https://ac.nowcoder.com/discuss/291157?type=1

浮点运算
// 浮点判等
assert(fabs(a-b)<1.0e-6);
// 浮点转字符串
std::to_string(1.234)
// 浮点数位数截取 (目前没有发现好的方法,采用先乘后除),https://blog.csdn.net/ojshilu/article/details/21634765
#include 
floor(1.23456*100)/100 // 小数点后保留两位小数
字符串操作
// 字符串位数截取,截取前四个。https://blog.csdn.net/liuweiyuxiang/article/details/50838349
string "ABCD".substr(0,4)
// 字符串拼接
// 不能字符串定义时直接做多字符串拼接
std::string ccc = "a" + "c"; // 会报错:error: invalid operands of types 'const char [2]' and 'const char [2]' to binary 'operator+'
// 需要先定义字符串变量,然后再拼接(定义时拼接或单独拼接)
std::string a = "a";
std::string ccc = a + "b"; // 定义时拼接
// 单独拼接
std::string a = "a";
std::string b = "b";
std::string ccc = a + b;
常见报错及解决方法
  1. terminate called after throwing an instance of ‘std::out_of_range’
  2. fatal error: opencv/cv.h: No such file or directory
  3. caffe 相关编译问题及解决
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/843946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号