c/c++
yanxiaopan
这个作者很懒,什么都没留下…
展开
-
编写C语言遇到的一些问题6
1.相同的c语言程序在windows和在linux调试的时候,若结果不同,很有可能是windows中vs2013中设置的问题,因为我的linux是64位的,所以下面debug的时候一定要设置x64,因为这地方默认是win322.相同的c语言程序在linux编译时如果语法没有问题,而在windows上语法有问题,而通过读程序,又往往找不到程序的问题出在哪,往往是格式的问题,vs2013默认情...原创 2019-11-26 11:09:59 · 300 阅读 · 0 评论 -
STL-非变序算法
find():在给定范围内搜索与指定值匹配的第一个元素。 find_if():在给定范围内搜索满足指定条件的第一个元素。 使用方向详见程序。#include<iostream>#include<algorithm>#include<vector>#include<stdlib.h>using namespace std;int main(){ vector<int> vints;原创 2016-11-17 10:39:05 · 327 阅读 · 0 评论 -
STL-forward_list(单向链表)
forward_list和list的用法很像,但因其为单向链表,插入元素是只能用push_front(),而不能用push_back()。#include<iostream>#include<stdlib.h>#include<forward_list>using namespace std;template<class T>void display(const T& input);int原创 2016-11-16 15:57:18 · 1329 阅读 · 0 评论 -
STL-list(双向链表)
标准模板库以list的方式向程序员提供了一个双向链表。 list可以有多种初始化方式;可用push_front()和push_back()在开头和末尾插入元素;可用insert()在任意位置插入元素;可用erase()删除list中的元素;可用reverse()反转list中的元素;可用sort()对list中的元素排序。#include<iostream>#include<stdlib.h>原创 2016-11-16 15:38:52 · 551 阅读 · 0 评论 -
STL-deque
deque也是一种动态数组,与vector极为相似。即可使用push_back()和pop_pack()插入和删除末尾的元素,又可用下标运算符[]访问deque中的元素。 与vector不同的是,它可允许使用push_front()和pop_front()在开头插入和删除元素。#include<iostream>#include<stdlib.h>#include<deque>using na原创 2016-11-16 11:26:12 · 341 阅读 · 0 评论 -
STL-queue(队列)
queue也是一种自适应容器,具体使用方法详见程序。 定义:template<class elementType,class Container=deque<Type>>class queue;可使用push()在 队尾插入元素,可使用pop()在队头删除元素;可使用front()取得队头元素,可使用back()取得队尾元素;可使用size()得到队列的大小;可使用empty()判断队列是否为空。原创 2016-11-16 11:07:50 · 426 阅读 · 0 评论 -
STL-stack(栈)
stack是一种自适应容器,使用方法详见程序。 定义:template<class elementType, class Container=deque<Type>> class stack;可使用push()在栈顶加入元素,可使用pop()在栈顶删除元素;可使用top()取栈顶元素;可使用size()计算栈的大小;可使用empty()判断栈是否为空。#include<stack>#includ原创 2016-11-16 11:01:51 · 449 阅读 · 0 评论 -
STL-vector
vector的使用详见程序,具有多种实例化的方式,可使用成员函数push_back()在末尾插入元素,可使用pop_back()删除末尾元素,可使用insert()在任意位置插入元素;有三种访问vector中元素的方法;并注意size()和capacity()的区别。#include<iostream>#include<vector>#include<stdlib.h>using namespa原创 2016-11-16 10:53:48 · 331 阅读 · 0 评论 -
C语言从txt文本中读取多行用逗号分隔的数据
例如数据为: 0.5712,0.45356,0.74399 0.58775,0.4721,0.77793 0.51964,0.42228,0.69693 将每一列的数据保存在一个double型数组中。 解决方案: 1.利用fscanf()函数:#include <stdio.h>#include<stdlib.h>int main(){ FILE *fp = fopen("C原创 2016-11-08 19:53:09 · 18760 阅读 · 0 评论 -
STL-变序算法(1)
fill():将指定范围内的元素设定为指定值。 fill_n():将n个元素设定为指定值。 注意:fill()和fill_n()中的参数不能用常迭代器,如cbegin()和cend(),因为这两个函数需要对迭代器指向的值进行修改,所以需要用begin()和end(). generate()和generate_n()用于将集合的内容设置为一元函数返回的值。#include<iostream>#原创 2016-11-17 15:14:32 · 517 阅读 · 0 评论 -
STL-变序算法(2)
STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除。若要真正移除,需要搭配使用erase()。 详见程序:#include<iostream>#include<algorithm>#include<vector>#include<list>#include<stdlib.h>using namespace std;template<class T>v原创 2016-11-17 16:13:40 · 302 阅读 · 0 评论 -
编写C语言遇到的一些问题5
1.在windows 下 vs2013中调试带参数的程序时, 在属性页->配置属性->调试->命令参数中添加调试需要带的参数2.假设我们的工程在my_yolov3文件夹下,且程序中有读文本文件的操作,假设用debug编译的,当运行程序时,需要把文本文件放置在my_yolov3/debug文件夹下;当调试该程序时,需要把文本文件放置在my_yolov3/my_yolov3文件夹...原创 2019-10-09 14:25:04 · 227 阅读 · 0 评论 -
gcc编译出现的问题1
1.undefined reference to `tanhf'这个问题是编译的时候少数学库,添加 -lm即可2. undefined reference to `std::__cxx11::basic_string这类问题是在使用 gcc 对c++ 文件进行编译的时候出现的,解决的方法是添加库stdc++gcc HelloWorld.cpp-lstdc++-o HelloW...原创 2019-08-23 18:53:27 · 558 阅读 · 0 评论 -
socket通信
socket可用于客户端和服务器端的通信参考:https://blog.csdn.net/hellokitty136/article/details/81367996ubuntu16.04上的程序:服务器端:#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<st...原创 2019-08-23 17:22:34 · 430 阅读 · 0 评论 -
编写C语言遇到的一些问题4
1.我常用的读写文件函数总结fopen:打开文件FILE *fopen( const char * filename, const char * mode );在vs中使用fopen时会报一个错误,需要:在属性——c/c++——预处理器——预处理器定义中添加 _CRT_SECURE_NO_WARNINGSfclose:关闭文件fprintf:以二进制的形式写入文件f...原创 2019-01-11 11:21:19 · 285 阅读 · 0 评论 -
编写C语言遇到的一些问题3
1.读取XXXX位置时发生访问冲突的问题出现这个问题一般有两个原因,一是使用的内存没有初始化,二是索引超过范围了。对于索引超过范围的问题可通过printf索引查找原因。2.二维数组内存分配空间及释放空间问题方式一:分配:int **dp1;dp1 = (int **)malloc(sizeof(int *) * row);//分配指针数组,计算行的大小for(int i=...原创 2019-01-11 10:55:42 · 447 阅读 · 0 评论 -
编写c语言程序遇到一些问题
1.读取文件路径时,是双斜杠,如果是单斜杠,会出现找不到目标文件的情况fid = fopen("E:\\my_c\\cloud_detection\\cloud_detection\\cloud\\gray_13.txt", "rb");2.数组使用前要进行内存分配和初始化,一定要初始化,不然有可能出现读取位置XXX时发生访问冲突的问题 labelmap = (int *)mall...原创 2018-12-18 14:28:59 · 835 阅读 · 0 评论 -
编写C语言遇到的一些问题2
1.调用函数时,想返回多个返回值,但用return只能返回一个值,这时可以采用出参的方法,想返回什么变量,则在函数调用前定义,然后传递该变量的引用和指针到函数即可。注意不要直接传递变量,这里有形参和实参的区别,直接传递变量,则不会对实参产生影响。2.引用存在的意义即是,可像操作“值”一样,同时传递的是指针,也可以对实参有实质性的改变。3.C语言相对于matlab比较繁琐的地方有:(1)...原创 2018-12-21 14:05:39 · 215 阅读 · 0 评论 -
迭代器的使用
参考: http://blog.csdn.net/qq_23100787/article/details/51388163 STL中的迭代器有五种类型,不同的容器可支持不同的迭代器 1.vector,支持随机迭代器#include<iostream>#include<vector>#include<stdlib.h>using namespace std;int main(){原创 2016-11-18 20:16:43 · 310 阅读 · 0 评论 -
c++中的类模板
参考: http://www.cnblogs.com/assemble8086/archive/2011/10/02/2198308.html转载 2016-11-08 19:08:33 · 332 阅读 · 0 评论 -
c++——指针在数组中的应用
#include<iostream>#include<stdlib.h>using namespace std;int main(){ int a[3] = { 1, 2, 3 }; int*p = a;//一维数组名指向数组首元素,指针p指向数组收元素 cout << *p << endl; int*q = &a[0];//指针q指向数组首元素 cou原创 2016-07-20 09:53:26 · 571 阅读 · 0 评论 -
c++纯虚函数
当一个基类的虚函数什么也不做时,如virtual double area(){ return 0; },可以创建基类自己的对象; 但是当一个基类的虚函数是纯虚函数时,如virtual double area() = 0;,不能创建基类自己的对象。#include<iostream>#include<stdlib.h>using namespace std;class shape//抽象类 不原创 2016-06-29 20:17:16 · 577 阅读 · 0 评论 -
c++虚基类
#include<iostream>#include<stdlib.h>using namespace std;class human{public: int func(){ return 1; }};class father :virtual public human//有函数func() func1(){public: int func1(){ return 2原创 2016-06-29 20:15:59 · 299 阅读 · 0 评论 -
c++多重继承
#include<iostream>#include<stdlib.h>using namespace std;class father{public: //father(){ cout << "创建父亲" << endl; } father(int height); //father(){} virtual ~father(){ cout << "析构父亲原创 2016-06-29 20:14:11 · 398 阅读 · 0 评论 -
c++多态性
#include<iostream>#include<stdlib.h>using namespace std;void func(int);//函数重载void func(long);float func(float);void func(double);int main(){ int a = 1; long b = 100000; float c = 1.5原创 2016-06-29 20:11:56 · 307 阅读 · 0 评论 -
c++栈和堆
当声明一个变量时,系统会自动在栈中为变量开辟内存空间,栈是系统自动分配的,速度快,但可存放的空间小。 当我们要存放比较大的数据时,选择用堆,堆是程序员申请的,可用空间比较大。#include<iostream>#include<stdlib.h>using namespace std;class A{public: A(){ cout << "构造函数执行完毕" << endl;原创 2016-06-27 21:51:21 · 304 阅读 · 0 评论 -
c++函数重载
#include<iostream>#include<stdlib.h>using namespace std;void func(int);//函数重载void func(long);float func(float);void func(double);int main(){ int a = 1; long b = 100000; float c = 1.5原创 2016-06-27 21:45:16 · 329 阅读 · 0 评论 -
c++继承和派生
通常子类不加修饰的延续父类的特征,我们把它叫做继承;而子类在延续父类特征的基础上又添加自己的新特征,叫做派生。 拥有一个基类的继承是单一继承,拥有多个基类的继承是多重继承。 class+派生类名:+派生类型+基类名 { private: 成员列表 public: 成员函数 } 注:括号内是派生类自己的成员和成员函数。 一个类的私有成原创 2016-06-27 21:29:13 · 421 阅读 · 0 评论 -
c++继承的构造与析构
继承的构造与析构:先构造基类,后构造子类;若是多重继承,则构造的顺序按继承时给出的顺序执行。原创 2016-06-27 21:35:04 · 485 阅读 · 0 评论 -
c++虚函数
将派生类的对象赋给基类指针,则可以使用该指针访问基类的数据和函数,但不能访问派生类的数据和函数。#include<iostream>#include<stdlib.h>using namespace std;class father{public: father() :age(45){ cout << "调用father类的构造函数并初始化age为:" << age << endl原创 2016-06-29 20:19:45 · 317 阅读 · 0 评论 -
c++动态联编和静态联编
将一个调用函数者联结上正确的被调用函数,这过程叫做函数联编。c++中的联编分两种,分为静态联编和动态联编。 为加virtual时是静态联编;加入virtual是动态联编。只有在使用指针或者引用时,才能实现在运行时的动态联编。#include<iostream>#include<stdlib.h>using namespace std;class poser{public: vir原创 2016-06-29 20:21:55 · 1076 阅读 · 0 评论 -
c++——数组指针和指针数组
————–指针—————- int a=10; int *p=&a;————-指针的指针———– int b=20; int *p=&b; int **p2p=&p;————-简单数组—————– int c[10];//整数数组,含有10个整数元素 也就是说每一个元素都是整数————–指针数组 是数组——————– int *p[10];//指针数组,含有10个原创 2016-07-19 19:20:01 · 1979 阅读 · 0 评论 -
c++——将数组中重复的数剔除
#include <iostream>using namespace std;int main(){ int k[10] = {0,1,1,0,2,3,2,4,2,4}; int l[10]; // 申请一个和k相同大小的数组,因为是排除相同,那l种大小必定小于等于k的大小 int m = 0; // 记录当前l种到底存了多少个元素 for(int i= 0;转载 2016-07-19 18:41:55 · 7723 阅读 · 0 评论 -
c++——union、struct、enum
1.union 共用体使用覆盖技术,几个变量相互覆盖,从而使几个不同变量共占同一段内存的结构,成为共同体类型的结构。 共同体的定义类似结构体,不过共同体的所有成员都在同一段内存中存放,起始地址一样,并且同一时刻只能使用其中的一个成员变量。 (1)不能应用共用体变量,而只能引用共用体变量中的成员。 (2)使用共用体变量的目的是希望通过统一内存段存放几种不同类型的数据。 (3)不能对共用体变量名原创 2016-07-08 11:09:46 · 466 阅读 · 0 评论 -
c++——const
参考:http://blog.csdn.net/Eric_Jo/article/details/4138548转载 2016-07-07 16:26:26 · 277 阅读 · 0 评论 -
c++——static关键字
参考:http://blog.csdn.net/hackbuteer1/article/details/7487694转载 2016-07-07 15:59:00 · 309 阅读 · 0 评论 -
c++——复制构造函数的使用
#include<vector>#include<iostream>#include<stdlib.h>using namespace std;struct student{ student(){ cout << "默认构造函数" << endl; } student(const student&){ cout << "复制构造函数" << endl; } stud原创 2016-07-06 14:36:52 · 574 阅读 · 0 评论 -
c++——this指针
1.一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。 参考:http://blog.csdn.net/feiyond/article/details/1652505原创 2016-07-06 12:33:36 · 290 阅读 · 0 评论 -
c++——成员初始化列表
1.成员初始化的顺序: 按照他们在类中出现的顺序进行初始化的,而不是按照他们在初始化列表出现的顺序初始化的。 2.必须在初始化列表中初始化的成员: •常量成员,因为常量只能初始化不能赋值,所以必须放在初始化列表里面 •引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表里面 •没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调原创 2016-07-06 12:22:36 · 465 阅读 · 0 评论 -
c++复制构造函数(浅拷贝、深拷贝)
#include<iostream>#include<stdlib.h>using namespace std;class A{public: A(){ x = new int; *x = 5; } ~A(){ delete x; x = NULL; } //A(const A&a){ cout << "复制构造函数执行" << endl; x = a.x; }//原创 2016-06-27 14:43:32 · 681 阅读 · 0 评论