int函数

小沈的C++学习7——指针

[亡魂溺海] 提交于 2020-03-25 15:00:59
  这节课终于学到指针了,话说感觉我是不是在前面几篇博客已经用过不少次这玩意了。但是指针到底是个什么东西呢?今天就让我们来学习指针这个东西。   首先我们小学一年级就学过,电脑里面有内存这个东西,就是利用电位高低存储各种数据,然后可以让cpu各种调用的小容器,而各种数据就听从程序的指挥,在一个个小格子里落户,这个格子就是内存地址。这个时候如果一个函数内部运行的时候在内存上留下了一串数据,它想把这一串数据都交给主函数,那它就可以直接把某个小格子的位置告诉主程序,主程序就可以利用这个位置信息直接到内存里去找这个函数留下来的数据。而这个位置信息就是指针。   首先我们要知道,指针本身也是一种数据,意思就是我们拿到一个指针,到指针指的位置上拿到一个数据,可能也是一个指针。   有了指针,我们甚至可以自己创造一个数据类型。比如我们所有函数都遵循这样一个约定:返回一个指针,指针指向一个指针数组,指针数组的一个指针指向一个数字,代表这个数据的长度或者内存长度,第二个指针指向另一个数字数组,代表这个数据里面每个数据的数据类型,第三个及之后的指针则指向各个数据。这个数据类型是不是很熟悉?没错,只要我们愿意,我们也可以手作一个列表。并且由于指针可以指向指针,这个列表可以不断嵌套(禁止禁止套娃)。 一、指针定义和运算 首先既然我们有了地址,那我们也要知道地址的数据有多长,是个什么类型的数据

P1666前缀单词

一个人想着一个人 提交于 2020-03-25 14:58:49
题目传送门 点我传送 Ⅰ.字典树+树型DP 非常奇妙的一种解法 第一部分:构建树 先对来的单词读入,插入字典树 然后对于一颗字典树,其实是有很多无用边的,所以我们需要删去一些边 删去 非单词节点和非单词节点之间的边 ,其实就是下面这个函数 void rebuild(int now,int fa) { if(isok[now])//当前节点是单词 { vec[fa].push_back(now);//连边 fa=now;//换爸爸了 } for(int i=1;i<=26;i++) { if(!tree[now][i]) continue; rebuild(tree[now][i],fa);//递归 } } 第二部分:树型DP 对于每一棵子树而言,右选和不选两种方案 选,则子树上的节点都不能再选,即为 \(dp[i][1]=1\) 不选,则子树上的节点可选可不选 \(f[i][0] = \prod_{j\in son[i]}(f[j][0]+f[j][1])\) 因为是计算方案,决策之间是彼此联系的,所以是相乘 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=5009; int n; int tree[maxn][27];int isok[maxn],tot;

POJ3481(待完善版本,请看注释)

久未见 提交于 2020-03-25 12:49:46
#include <iostream> using namespace std; //根据需求调整大小 #define SIZE 10 typedef struct Node{ int K; int P; }Node; Node big[SIZE]; Node small[SIZE]; int big_size=1; int small_size=1; void swap(Node x, Node y) { Node tmp; tmp.K = x.K; tmp.P = x.P; x.K = y.K; x.P = y.P; y.K = tmp.K; y.P = tmp.P; } void big_fixDown(Node heap[], int pos, int size){ int x = pos; if(x > size) return;//exit // 选出最大的 int l = 2 * x; int r = l + 1; int maxPos = x; if(l <= size && heap[maxPos].P < heap[l].P) maxPos = l; if(r <= size && heap[maxPos].P < heap[r].P) maxPos = r; if(maxPos != x){ //如果父节点不是最大的,进行互换,并在新的点上继续fixDown

C++ map的方法

不羁岁月 提交于 2020-03-25 06:44:10
参考文档: http://blog.csdn.net/allovexuwenqiang/article/details/5686583 Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map最基本的构造函数; map<string , int >mapstring; map<int ,string >mapint; map<sring, char>mapstring; map< char ,string>mapchar; map<char ,int>mapchar; map<int ,char >mapint; 2. map添加数据; map<int ,string> maplive; 1.maplive.insert(pair<int,string>(102,"aclive")); 2.maplive.insert(map<int,string>::value_type(321,"hai")); 3, maplive[112]="April";//map中最简单最常用的插入添加! 3,map中元素的查找: find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 map<int ,string >::iterator l_it;; l_it

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符\"go\"时,第一个只出现一次的字符是\"g\"。当从该字符流中读出前六个字符“google\"时,第一个只出现一次的字符是\"l\"。

邮差的信 提交于 2020-03-24 23:46:15
public class Solution { //Insert one char from stringstream int[] arr = new int[256]; int temp = 1; public void Insert(char ch) { if(arr[ch] == 0){ arr[ch] = temp++; } else{ arr[ch] = -1; } } //return the first appearence once char in current stringstream public char FirstAppearingOnce() { int num = Integer.MAX_VALUE; char ch = '#'; for(int i = 0; i < 256; i++){ if(arr[i] != 0 && arr[i] != -1 && arr[i] < num){ num = arr[i]; ch = (char)i; } } return ch; } } 来源: https://www.cnblogs.com/q-1993/p/10950039.html

腾讯2014软件开发笔试题目

纵饮孤独 提交于 2020-03-24 19:01:59
腾讯2014软件开发笔试题目 -----9月21日,腾讯2014软件开发校招-简答题-广州 简答题: 1、请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在 中所处的位置和变化。队伍可能随时有人加入和退出,当有人退出影响到用户的位置排名时需要即时反馈到用户。 2、A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。 (博主能力有限,不是所有题目都会求解,第1题不是我的擅长,这里贴出来让大家知道腾讯的考题。我的重点放在第2题上面!) 第2题 题解(个人看法,仅供参考!) 思路1:排序法   对集合A和集合B进行排序(升序,用快排,平均复杂度O(N*logN)),设置两个指针p和q,同时指向集合A和集合B的最小值,不相等的话移动*p和*q中较小值的指针,相等的话同时移动指针p和q,并且记下相等的数字,为交集的元素之一,依次操作,直到其中一个集合没有元素可比较为止。    优点: 操作简单,容易实现。    缺点: 使用的排序算法不当,会耗费大量的时间,比如对排好序的集合使用快排, 时间复杂度是O(N 2 )   这种算法是大家都能比较快速想到的办法,绝大多数时间放在了对集合的排序上,快排的平均复杂度是 O(N*logN),对排好序的集合做查找操作,时间复杂度为O(N),当然这种算法肯定比遍历要快多了。 code: #include <stdio.h> #include

C++类复习及新的认识 6.1.1+6.1.2内容(适合看过一遍书的新手)

北战南征 提交于 2020-03-24 15:34:48
作者水平有限,文字表述大多摘抄课本,源码部分由课本加自己改编而成,所有代码均在vs2019中编译通过 定义类操作 class Tdate { public: void Set(int m, int d, int y ) { month = m ; day = d ; year = y ; } int IsLeapYear() { return ( year%4 == 0 && year%100 != 0 )||( year%400 == 0); } void Print() { cout << year << "." << month << "." << day << endl ; } private: int month;     int day;      int year; }; 上面是一个时间类的定义,可以看到类中是有成员和成员函数的,成员函数可以在类里面定义也可以在类外定义 在类中定义的成员函数是当作内联函数来处理的,关于内联函数的学习链接: 在类外定义的成员函数当成普通函数处理 上面是从书上的例子,当然,按照好的编程习惯我们应该这么定义,在类里面声明,在类外定义,这样在可以不暴露实现代码的情况下提供外部接口 #ifndef Tdate_H#define Tdate_H//Tdate.h#include <iostream>using std::cin;using std

C# 练习题 数组结构

天大地大妈咪最大 提交于 2020-03-24 14:19:38
排序问题 上午 复习 ---------------------------------------------------- 1.复习:冒泡排序 问题:有一组数据,排序之前: -1 10 - 20 -30 要求按从小到大的顺序排序 --------------------------------------------------- 解答: 1) 排序过程: 第一轮:3次,最大值,冒到最后 10 1) -1 10 不交换 -1 10 - 20 -30 2)10 -20 交换 -1 -20 10 -30 3)10 -30 交换 -1 -20 -30 10 ------------------------------------------------- 注:第一轮之后,数组变为: -1 -20 -30 10 ----------------------------------------------- 第二轮:2次, -1 -20 -30 1)-1>-20 -20 -1 -30 2) -1>--30 -20 -30 -1 ------------------------------------------------ 注:第一轮之后,数组变为: -20 -30 -1 10 ----------------------------------------------- 第三轮:

禁用 全局快捷键

穿精又带淫゛_ 提交于 2020-03-24 12:31:12
在给软件添加快捷键时,经常遇到其它软件或者系统已设置的快捷键,导致功能冲突。 HotKey函数 下面介绍一个user32.dll的RegisterHotKey以及UnregisterHotKey热键处理的函数 注册热键 RegisterHotKey function BOOL RegisterHotKey(    HWND hWnd, //响应热键的窗口句柄,如果为空,则注册到调用线程上    Int id, //热键的唯一标识    UINT fsModifiers, //热键的辅助按键    UINT vk //热键的键值 ); 解除注册热键 UnregisterHotKey function BOOL WINAPI UnregisterHotKey(    HWND hWnd,//热键注册的窗口    int id//要解除注册的热键ID ); 添加热键注册和注销函数 流程: Register方法 - 注册user32.dll函数RegisterHotKey以禁用全局键,并在缓存内添加禁用记录 ProcessHotKey方法 - 外界全局键调用时,调用回调函数 1 public class HotKeys 2 { 3 //引入系统API 4 [DllImport("user32.dll")] 5 static extern bool RegisterHotKey(IntPtr

unique_ptr

倖福魔咒の 提交于 2020-03-24 05:58:32
【 unique_ptr 】    unique_ptr 不共享它的指针。 它无法复制到其他 unique_ptr ,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。 只能移动 unique_ptr 。 这意味着,内存资源所有权将转移到另一 unique_ptr ,并且原始 unique_ptr 不再拥有此资源。    1、 如何创建unique_ptr int main() { // 创建一个unique_ptr实例 unique_ptr<int> pInt(new int(5)); cout << *pInt; } 2、 无法进行复制构造和赋值操作 int main() { // 创建一个unique_ptr实例 unique_ptr<int> pInt(new int(5)); unique_ptr<int> pInt2(pInt); // 报错 unique_ptr<int> pInt3 = pInt; // 报错 } 3、 可以进行移动构造和移动赋值操作 int main() { unique_ptr<int> pInt(new int(5)); unique_ptr<int> pInt2 = std::move(pInt); // 转移所有权 //cout << *pInt << endl; // 出错,pInt为空 cout <<