cout

C++基础·笔记——引用的总结

不羁岁月 提交于 2020-01-31 11:20:14
C++基础·笔记——引用的总结 ~QQ:3020889729 ~小蔡 引用的理解(C++) 引用的定义 引用的含义 引用的使用(C++) 对变量进行引用操作 **关于必须初始化/不能进行第二次引用修改的说明(代码)** ①必须初始化: ②只能进行一次引用 一、实参与实参的引用操作: 二、实参与形参的引用操作: 返回值为引用类型的操作 返回值为引用类型的理解 总结 ~QQ:3020889729 ~小蔡 引用的理解(C++) 引用的定义 引用就是 某一变量(目标) 的一个别名,对 引用 的操作与对 变量 直接操作完全一样。 引用的含义 ①引用就是一个 指针常量 ——所谓指针常量就是,指针指向一个确定的地址,且该 地址确定不变 。 ②既然只是确定地址不变,那么 地址上的内容 就是可以 修改 / 设置 的。 ③引用作用的一个目标——该目标可以是对象或者说变量,但是不能是数组,因为数组不单一。 (ps:对数组操作,就直接使用指针就好。多级指针会在另外一篇博客上有说。) 引用的使用(C++) ps:使用引用时,必须初始化,并且初始化确定后,不可以再更改。 对变量进行引用操作 关于必须初始化/不能进行第二次引用修改的说明(代码) ①必须初始化: (代码如下) #include "iostream" using namespace std; int main() { int a=5; int &b

How to print a type vector<pair<char, int>> to screen c++?

拜拜、爱过 提交于 2020-01-31 07:08:49
问题 I have a method that returns a value vector> and I cannot figure out how to print the contents of this vector. I was trying to loop through the contents but I get compiler errors. Here is an example of what I have tried. vector<pair<char, int>> output; for(int i = 0; i < ouput.size; i++) { cout << output[i][i] << endl; //output[i][i] does no work: no operator [] matches these operands } 回答1: The elements of an std::pair are the first and second data members, so a trivial modification of your

How to print a type vector<pair<char, int>> to screen c++?

为君一笑 提交于 2020-01-31 07:08:17
问题 I have a method that returns a value vector> and I cannot figure out how to print the contents of this vector. I was trying to loop through the contents but I get compiler errors. Here is an example of what I have tried. vector<pair<char, int>> output; for(int i = 0; i < ouput.size; i++) { cout << output[i][i] << endl; //output[i][i] does no work: no operator [] matches these operands } 回答1: The elements of an std::pair are the first and second data members, so a trivial modification of your

C++输入输出缓冲区的刷新问题

梦想的初衷 提交于 2020-01-31 05:25:27
当我们对文件流进行操作的时候,它们与一个streambuf 类型的缓存(buffer)联系在一起。这个缓存(buffer)实际是一块内存空间,作为流(stream)和物理文件的媒介。例如,对于一个输出流, 每次成员函数put (写一个单个字符)被调用,这个字符不是直接被写入该输出流所对应的物理文件中的,而是首先被插入到该流的缓存(buffer)中。 当缓存被排放出来(flush)时,它里面的所有数据或者被写入物理媒质中(如果是一个输出流的话),或者简单的被抹掉(如果是一个输入流的话)。这个过程称为同步(synchronization),它会在以下任一情况下发生: 1.程序正常结束。作为main返回工作的一部分,将清空所有的输出缓冲区。 2.在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。 3.用操纵符显示地刷新缓冲区,如用endl。 4.在每次输出操作执行完毕后,用unitbuf操纵符设置流的内部状态,从而清空缓冲区。 5.可将输出流与输入流关联起来,在读输入流时将刷新其关联的输出缓冲区。 在C++中,cin, cout, cerr 分别于stdin, stdout, stderr对应的。即iostream流对象分别与cstdio对应,关系如下: 同步即表明我们可以在程序中混合用cout和printf或其他对应的流对,并不会引起流指针的混乱

关于std::ios::sync_with_stdio(false)

霸气de小男生 提交于 2020-01-31 04:48:52
  std::ios::sync_with_stdio(false);   很多C++的初学者可能会被这个问题困扰,经常出现程序无故超时,最终发现问题处在cin和cout上,(甚至有些老oier也会被这个问题困扰,每次只能打scanf和printf,然后一堆的占位符巨麻烦),这是因为C++中,cin和cout要与stdio同步,中间会有一个缓冲,所以导致cin,cout语句输入输出缓慢,这时就可以用这个语句,取消cin,cout与stdio的同步,说白了就是提速,效率基本与scanf和printf一致。然后就可放心的使用cin,cout了。 (不过实际上使用了using namespace std;之后就可以直接打ios::sync_with_stdio(false);了)   update-20th/July/2018   今天遇到有人问问题说关闭流同步以后会炸空间,我也很诧异。然后看了下代码,问题出在scanf()。取消流同步以后,stdio中带有的scanf()和printf()输入输出的内部同步也会被取消(大概是这样的,如果有误请联系博主更正),这时候再用scanf()和printf()就可能会出玄学错误,所以用的时候也要注意。   另外,如果使用文件输入输出的话,一定记住要把这条语句放在freopen()后面,反正也会出西西,但是具体问题博主也不太清楚。。。    哎

cin的优化

烂漫一生 提交于 2020-01-30 17:58:44
  虽然C++有cin函数,但看别人的程序,大多数人都用C的scanf来读入,其实是为了加快读写速度,难道C++还不如C吗!? 其实cin效率之所以低,不是比C低级,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而且是C++为了兼容C而采取的保守措施。   先讲一个cin中的函数——tie,证明cin和scanf绑定是同一个的流。   tie是将两个stream绑定的函数,空参数的话返回当前的输出流指针。   先码代码: 1 #include <iostream> 2 #include <fstream> 3 #include <windows.h> 4 5 using namespace std; 6 7 int main() 8 { 9 ostream *prevstr; 10 ofstream ofs; 11 ofs.open("test.out"); 12 printf("This is an example of tie method\n"); //直接输出至控制台窗口 13 14 *cin.tie() << "This is inserted into cout\n"; // 空参数调用返回默认的output stream,也就是cout 15 prevstr = cin.tie(&ofs); // cin绑定ofs,返回原来的output stream 16

STL之vector

痞子三分冷 提交于 2020-01-30 00:43:08
vector STL vector的内部实现原理及基本用法 初始化vector对象的方式: vector v1; //未指定初始化方式,因此采用默认方式初始化v1,即长度为0的空容器; vector v2; //定义对象v2,作为v1的副本; vector v3(n,i);//定义对象v3,它包含n个数值为i的元素; vector v4(n); //定义对象v4,v4中包含n个元素,每个元素的值均是0; 其中:T可以为int,float,char,char*(存放字符串或字符指针)。一般用于int动态数值时,定义vector v1,用v1来保存数值元素。 vector的常用函数:只需要包含#include 即可 empty():判断vector向量是否为为空,为空时返回真,否则返回假; begin():返回向量(数组)的首元素的地址; end():返回向量(数组)的末尾元素的下一个元素(不存在的元素)的地址; clear():清空向量; front():返回向量(数组)的第一个元素的数据; back():返回向量(数组)的最后一个元素的数据; size():返回向量中元素的个数(即数组长度) push_back(数据i):将数据插入到向量的尾部; pop_back():删除向量尾部的数据 // vector_base.cpp : 定义控制台应用程序的入口点。 // #include

用邻接矩阵和邻接表创建图

十年热恋 提交于 2020-01-28 16:14:18
#include <iostream> using namespace std; #define INFINITY 65536//无穷大 #define MAX_VERTEX_NUM 10//最大顶点个数 typedef enum{DG,DN,UDG,UDN}GraphKind;//有向图,有向网,无向图,无向网 struct Graph { char vexs[MAX_VERTEX_NUM];//储存顶点 int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//邻接矩阵 int vexnum, arcnum;//顶点数和边(弧)数 GraphKind kind;//图的种类 }; //确定顶点序号 int LocateVex(Graph *G, char ch) { for (int i = 0; i < G->vexnum; i++) if (G->vexs[i] == ch) { return i;//返回顶点序号 break; } return -1; } void CreateUDN(Graph *G)//创建无向网 { int i, j; char v1, v2;//记录顶点名称 int w;//记录权值 cout << "请输入顶点个数:" << endl;cin >> G->vexnum; cout << "请输入边的个数:" <<

C++中的结构体vector排序

我与影子孤独终老i 提交于 2020-01-27 21:48:15
在包含了头文件#include <algorithm>之后,就可以直接利用sort函数对一个vector进行排序了: 1 // sort algorithm example 2 #include <iostream> // std::cout 3 #include <algorithm> // std::sort 4 #include <vector> // std::vector 5 6 bool myfunction (int i,int j) { return (i<j); } 7 8 struct myclass { 9 bool operator() (int i,int j) { return (i<j);} 10 } myobject; 11 12 int main () { 13 int myints[] = {32,71,12,45,26,80,53,33}; 14 std::vector<int> myvector (myints, myints+8); // 32 71 12 45 26 80 53 33 15 16 // using default comparison (operator <): 17 std::sort (myvector.begin(), myvector.begin()+4); //(12 32 45 71)26 80 53 33

寒假作业一

百般思念 提交于 2020-01-26 23:42:18
作业描述 详情 这个作业属于哪个课程 2020福大面向对象程序设计 这个作业要求在哪里 面向对象程序设计寒假作业一 这个作业的目标 a.安装c++开发环境; b.了解c语言缺陷,以及c++/c语言编译过程; c.了解命令行,查看编译器版本,用命令行编译代码; d.学习markdown技巧,完成要求编程题 作业正文 寒假作业一 其他参考文献 visual studio2019的安装以及使用 、 markdown 、C++ Primer Plus 一、问答题 1.如果你不了解C++请回答以下问题:你认为C语言有什么缺陷(你觉得哪里用的不顺手)。 1.C语言比较灵活,但这就造成语法限制不严格。 C语言对数组下标越界不检查,对变量类型也约束不严,运行时类型检查不可用,这样就很难发现错误。 2.C语言运算符多,优先级也不太一样,使用的时候比较麻烦。 有的时候对部分运算符优先级使用错误,也较难发现。 3.C语言在实现过程中可能会比较复杂,有时代码需要写的很长。 4.输入输出都比较麻烦,对于字符串的输入输出问题也更容易出现问题。 2.查阅相关资料,简述一下C语言/C++的编译过程。 (最近刚开始看c++,这边对c++的编译过程进行简述) 编译源代码,这个过程是将源代码翻译为主机使用的内部语言——机器语言。 过程大概是预编译处理(.c)->编译优化程序(.s->汇编程序(.obj、.o、.a)->