cout

类和对象(下)C++

拟墨画扇 提交于 2019-12-05 03:22:32
1. 再谈构造函数 构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作为类对象成员的初始化,构造 函数体中的语句只能将其称作为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内 可以多次赋值。 class Date { public: //这样的构造函数中是赋初始值,不是初始化 //Date(int year,int month,int day) //{ // _year = year; // _month = month; // _day = day; //} Date(int year, int month, int day) :_year(year) //初始化列表 用:后面个参数赋值用,隔开,最后一个参数后不加分隔符 , _month(month) , _day(day) {} private: int _year; int _month; int _day; }; int main() { Date d1(2016, 6, 6); return 0; } 注意: 1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次) 。 2. 类中包含以下成员,必须放在初始化列表位置进行初始化: 引用成员变量 const成员变量 类类型成员(该类没有默认构造函数 3. 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量

【cf995】F. Cowmpany Cowmpensation(拉格朗日插值)

依然范特西╮ 提交于 2019-12-05 02:13:27
传送门 题意: 给出一颗树,每个结点有取值范围 \([1,D]\) 。 现在有限制条件:对于一个子树,根节点的取值要大于等于子数内各结点的取值。 问有多少种取值方案。 思路: 手画一下发现,对于一颗大小为 \(sz\) 的数,最终的答案为一个 \(sz+1\) 次为最高次幂的多项式。 因为节点数 \(n\leq 3000\) ,所以暴力求出后插值即可。 简略证明:对于一个链,显然,一个长度为 \(x\) 的链,最终的结果为 \(x+1\) 次的多项式;考虑两条链的合并:长度为 \(x\) 的链和长度为 \(y\) 的链,显然两者相乘最终为 \(x+y+2\) 次的多项式,因为合并过后会多一个父节点,那么就是有 \(x+y+1\) 个点。 归纳一下就有上面说的结论了。 代码如下: /* * Author: heyuhhh * Created Time: 2019/11/18 20:20:04 */ #include <bits/stdc++.h> #define MP make_pair #define fi first #define se second #define sz(x) (int)(x).size() #define all(x) (x).begin(), (x).end() #define INF 0x3f3f3f3f #define Local #ifdef

C++ reset locale to “C” globally?

岁酱吖の 提交于 2019-12-05 01:48:53
In a project I am currently working on I link to a proprietary dynamic library. As soon as I run the library's initialize function, the behavior of logging and printing of numbers changes. Commas have been inserted at every third decimal. Ie. cout << 123456789 << endl used to print out 123456789 and now it prints 123,456,789 . This is horribly annoying, because this behavior is not what I want. This issue is not only apparent in the binary I am compiling, but also shows up in all the couts and stringstreams in the libraries that I link to it. I have tried using this line of code after calling

c++ 调用 sqlcipher

北城余情 提交于 2019-12-05 00:31:29
#include <iostream> #include <string.h> #include "sqlite3.h" using namespace std; static int callback(void *notUsed, int argc, char **argv, char **azColName) { for (int i = 0; i < argc; i++) cout << azColName[i] << ":" << (argv[i] ? argv[i] : "NULL") << "\t"; cout << endl; return 0; } void dbTest() { #pragma region 打开或创建数据库 /*打开或创建的数据库实例句柄*/ sqlite3 *db = NULL; /*数据库文件的路径及文件名*/ const char* path = "./sqlcipher.db"; /*根据文件路径打开数据库连接。如果数据库不存在,则创建。数据库文件的路径必须以C字符串传入*/ int result = sqlite3_open_v2(path, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE,

How to get console output in Visual Studio 2012 Unit Tests

纵饮孤独 提交于 2019-12-04 23:51:32
I have a managed C++ unit test in VS 2012. The test runs fine and I can verify that a loop with multiple cout calls is executed. However when I look at the test explorer the test is marked as passed but there is no hyper link for the output as I am used to for c# projects. The code at the end of my test is for (int i = 0; i < 4; i++) { cout << parameters[i]; cout << endl; } which I can verify runs as I step through it in the debugger. I have also tried with cerr but no difference. You can use Debug::WriteLine() (in the System::Diagnostics namespace) or Console::WriteLine() to write output to

简述最小生成树的算法

假如想象 提交于 2019-12-04 21:11:24
最小生成树 接下来是介绍最小生成树的内容。 什么是最小生成树? 定义: 各边的代价之和最小的那棵生成树称为该连通网的最小代价生成树( Minimum Cost Spanning Tree ),简称最小生成树。 构成最小生成树的算法有很多,其中多数的算法都是利用了最下生成树的一种性质: 性质: 假设N=(V,E)是一个连通网,U是顶点集V的一个非空子集。若(u,v)是一条具有最小权值(或者说代价)的边,其中u∈U,v∈V-U,那么必定存在一颗包含边(u,v)的最小生成树 总结起来,得具备这些条件: 是一个连通网(连通图) 各边有权值 如果还不了解,那么我们来举一个例子: 比方说我们需要在n个城市中建立一个联系网,因为城市众多,我们当然不可能一一给他们都连通,考虑到价格问题,我们必须得用最小的代价从而连通所有的城市。 该怎么做呢?好难(っ °Д °;)っ 我们用圆圈来表示每个城市 然后用箭头中包含的值来表示权值 我们的问题来了,我们该怎样去选择,从而达到我们的目的呢? ( 我们的目的是:德玛西亚d=====( ̄▽ ̄*)b.......当然....目的是选择几条路线,组成的权值最小,并且能够把这几个点连接上...... ) 首先我们用眼睛观察.....然后我们很容易选出这几条路线: 然后我们来算算,总权值是:1+2+4+5+12=24。没错,这就是最小生成树的构成,我们所选的路线并没有错

SOCKET 通信

淺唱寂寞╮ 提交于 2019-12-04 18:43:08
TCP 服务端 #include<iostream> #include<winsock.h> #pragma comment(lib,"ws2_32.lib") using namespace std; void initialization() { //初始化套接字库 WORD w_req = MAKEWORD(2, 2);//版本号 WSADATA wsadata; /*WSAStartup()程序使用的socket版本、操作系统但会的支持的socket版本,成功时返回0*/ int err = WSAStartup(w_req, &wsadata); if (err != 0) { cout << "初始化套接字库失败!" << endl; } else { cout << "初始化套接字库成功!" << endl; } //检测版本号 if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wHighVersion) != 2) { cout << "套接字库版本号不符!" << endl; WSACleanup(); } else { cout << "套接字库版本正确!" << endl; } } int main() { //定义长度变量 int send_len = 0, recv_len = 0; int len =

采用邻接矩阵表示法创建无向网

 ̄綄美尐妖づ 提交于 2019-12-04 18:32:47
//采用邻接矩阵表示法创建无向网 #include <iostream> using namespace std; #define MaInt 32767 #define MVNum 100 #define OK 1 typedef char VerTextType; typedef int ArcType; typedef struct { VerTextType Vexs[MVNum]; ArcType arcs[MVNum][MVNum]; int vexnum, arcnum; }AMGrach; int LocateVex(AMGrach G, VerTextType v) { for (int i = 0;i < G.vexnum;i++) { if (G.Vexs[i] == v) return i; } return -1; } int CreateUDN(AMGrach& G) { int i, j, k; cout << "请输入总顶点数,总边数,以空格隔开:"; cin >> G.vexnum >> G.arcnum; cout << endl; cout << "输入点的名称,如a" << endl; for (i = 0;i < G.vexnum;i++) { cout << "input the " << i << " name"; cin >> G

深度优先搜索遍历连通图的递归算法

别说谁变了你拦得住时间么 提交于 2019-12-04 18:32:45
//深度优先搜索遍历连通图的递归算法 #include <iostream> using namespace std; #define MVNun 100 typedef char VerTexType; typedef int ArcType; typedef struct { VerTexType vexs[MVNun]; ArcType arcs[MVNun][MVNun]; int vexnum, arcnum; }Graph; bool visited[MVNun]; int FirstAdjVex(Graph G, int v); int NextAdjVex(Graph G, int v, int w); int LocateVex(Graph G, VerTexType v) { for (int i = 0;i < G.vexnum;++i) { if (G.vexs[i] == v) return i; } return -1; } void CreateUDN(Graph& G) { int i, j, k; cout << "请输入总顶点数,总边数 , 以空格隔开:"; cin >> G.vexnum >> G.arcnum; cout << endl; cout << "输入点的名称,如 a:" << endl; for (i = 0;i < G

采用邻接表表示法创建无向图

与世无争的帅哥 提交于 2019-12-04 18:32:39
//采用邻接表表示法创建无向图 #include <iostream> using namespace std; #define MVNnm 100 #define OK 1 typedef char VerTexType; typedef int OtherInfo; typedef struct ArcNode { int adjvex; struct ArcNode* nextarc; OtherInfo info; }ArcNode; typedef struct VNode { VerTexType data; ArcNode* firstarc; }VNode, adjList[MVNnm]; typedef struct { adjList vertices; int vexnum, arcnum; }ALGraph; int LocateVex(ALGraph G, VerTexType v) { for (int i = 0;i < G.vexnum;++i) { if (G.vertices[i].data == v) { return i; } } return -1; } int CreatUDG(ALGraph& G) { int i, k; cout << "请输入总顶点数,总边数中间以空格隔开:"; cin >> G.vexnum >> G