<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SUPERAIN丶的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/i72421</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; i72421]]></copyright><item><title><![CDATA[C++事件聚合器]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/137437629</link><guid>https://blog.youkuaiyun.com/i72421/article/details/137437629</guid><author>i72421</author><pubDate>Sat, 06 Apr 2024 21:24:19 +0800</pubDate><description><![CDATA[事件聚合器（Event Aggregator）允许不同的组件订阅和发布事件，而不需要知道事件的发布者和订阅者是谁，实现模块在不直接相互引用的情况下通信，实现模块间的松耦合。事件聚合器常用语C#语言中，以下为C++语言的简单实现。C++事件聚合器的实现。]]></description><category></category></item><item><title><![CDATA[CPP异步队列]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/132502702</link><guid>https://blog.youkuaiyun.com/i72421/article/details/132502702</guid><author>i72421</author><pubDate>Fri, 25 Aug 2023 20:42:08 +0800</pubDate><description><![CDATA[【代码】CPP异步队列。]]></description><category></category></item><item><title><![CDATA[x^n的算法—python]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/108858014</link><guid>https://blog.youkuaiyun.com/i72421/article/details/108858014</guid><author>i72421</author><pubDate>Mon, 28 Sep 2020 21:27:22 +0800</pubDate><description><![CDATA[参考链接@小泡芙吖


三种方法的原理都是一样的
对于n，先将其换成二进制形式，在这里举个例子，假设n=11，其二进制形式是1011
从左边数的第二位开始，若等于0，则对x进行平方，若为1，则先对当前结果进行平方，再乘上x。

方法一：
# 11 -&gt; 1011
# x^11=(((x)^2)^2*x)^2*2
def do(x, n):
    b = []
    res = 1

    while n &gt; 0:
        b.append(n % 2)
        n //= ]]></description><category></category></item><item><title><![CDATA[K近邻算法的KD树实现]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/106532675</link><guid>https://blog.youkuaiyun.com/i72421/article/details/106532675</guid><author>i72421</author><pubDate>Wed, 03 Jun 2020 20:54:34 +0800</pubDate><description><![CDATA[#K近邻算法的KD树实现
#lichunyu-2020.6.3

import pandas as pd
import numpy as np
import math
import matplotlib.pyplot as plt

class Node:
    def __init__(self):
        self.left = None
        self.right = None
        self.value = [] #vector

class Neighbour:
  ]]></description><category></category></item><item><title><![CDATA[QT绘制动态蚂蚁线]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/106372691</link><guid>https://blog.youkuaiyun.com/i72421/article/details/106372691</guid><author>i72421</author><pubDate>Wed, 27 May 2020 09:11:06 +0800</pubDate><description><![CDATA[#ifndef WIDGET_H
#define WIDGET_H
#include 
#include 
#include 
#include 
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
protected:
void paintEvent(QPaintEvent *event) override;
void timerEvent(QTimerEvent *e]]></description><category></category></item><item><title><![CDATA[Qt实现带动画的循环滚动的效果]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/104968916</link><guid>https://blog.youkuaiyun.com/i72421/article/details/104968916</guid><author>i72421</author><pubDate>Thu, 19 Mar 2020 15:36:47 +0800</pubDate><description><![CDATA[Qt实现带动画的循环滚动的效果

scrollview.h
#ifndef SCROLLVIEW_H
#define SCROLLVIEW_H

#include &lt;QWidget&gt;
#include &lt;QPropertyAnimation&gt;
#include &lt;QParallelAnimationGroup&gt;

class ScrollView : publi...]]></description><category></category></item><item><title><![CDATA[台阶储水问题]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/104036233</link><guid>https://blog.youkuaiyun.com/i72421/article/details/104036233</guid><author>i72421</author><pubDate>Sun, 19 Jan 2020 08:38:33 +0800</pubDate><description><![CDATA[Question:

Analysis:

Solution:
#include &lt;iostream&gt;

int main(int argc, char **argv)
{
    int stages[] = {3, 0, 1, 2, 1, 0, 2, 3, 0, 2, 0, 2};
    int sum = 0;

    for (int i = 0; i &lt; 12 - ...]]></description><category></category></item><item><title><![CDATA[递归实现旋转矩阵]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/103412282</link><guid>https://blog.youkuaiyun.com/i72421/article/details/103412282</guid><author>i72421</author><pubDate>Thu, 05 Dec 2019 20:52:11 +0800</pubDate><description><![CDATA[递归实现旋转矩阵

#include &lt;stdio.h&gt; 

#define    N    5    //矩阵的阶数

void fun(int n, int first, int a[N][N])
{
    int i;
    
    if(n &gt; N / 2 + 1)
    {
        return;
    }
    
    //每层递归赋值“一圈”
...]]></description><category></category></item><item><title><![CDATA[通过指针访问二维数组的三种方式]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/103317662</link><guid>https://blog.youkuaiyun.com/i72421/article/details/103317662</guid><author>i72421</author><pubDate>Fri, 29 Nov 2019 20:38:51 +0800</pubDate><description><![CDATA[通过指针访问二维数组的三种方式
/*
*通过指针访问二维数组的三种方式
*2019-11-29
*/
#include &lt;stdio.h&gt;

int main(int argc, char *argv[])
{
    int a[4][4];
    int i, j;
    int *pInt;         //普通指针
    int (*pIntPtr)[4]; //数组...]]></description><category></category></item><item><title><![CDATA[C链表模拟汉诺塔]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/103283666</link><guid>https://blog.youkuaiyun.com/i72421/article/details/103283666</guid><author>i72421</author><pubDate>Wed, 27 Nov 2019 21:16:26 +0800</pubDate><description><![CDATA[C++链表实现汉诺塔
/*
*链表实现汉诺塔——2019.11.26
*/

#include &lt;stdio.h&gt; 
#include &lt;stdlib.h&gt;

typedef struct node
{
    int data;
    struct node *next;
}Node;
/*
*data存储盘子大小
*/

void output(Node *list)...]]></description><category></category></item><item><title><![CDATA[C++运算符重载—复数]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/90721022</link><guid>https://blog.youkuaiyun.com/i72421/article/details/90721022</guid><author>i72421</author><pubDate>Fri, 31 May 2019 18:16:04 +0800</pubDate><description><![CDATA[C++运算符重载
案例：复数
Complex.h
#pragma once
#include &lt;iostream&gt;

class Complex
{
	friend std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const Complex &amp;c);
public:
	Complex(int real, int...]]></description><category></category></item><item><title><![CDATA[Qt颜色下拉框菜单]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/81481163</link><guid>https://blog.youkuaiyun.com/i72421/article/details/81481163</guid><author>i72421</author><pubDate>Tue, 07 Aug 2018 14:50:27 +0800</pubDate><description><![CDATA[Qt颜色下拉框菜单

头文件：

#ifndef COLOR_MENU
#define COLOR_MENU

#include &amp;amp;lt;QObject&amp;amp;gt;
#include &amp;amp;lt;QMenu&amp;amp;gt;
#include &amp;amp;lt;QAction&amp;amp;gt;
#include &amp;amp;lt;QGridLayout&amp;amp;gt;
#include &amp;amp;lt;QMenu&amp;amp]]></description><category></category></item><item><title><![CDATA[Qt画圆角矩形]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/81362507</link><guid>https://blog.youkuaiyun.com/i72421/article/details/81362507</guid><author>i72421</author><pubDate>Thu, 02 Aug 2018 16:22:42 +0800</pubDate><description><![CDATA[Qt画圆角矩形

void TestPainter::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    const qreal radius = 20;
    QRectF rect = QRect(200, 200, 400, 80);

    QPainterPath path;

    path.move...]]></description><category></category></item><item><title><![CDATA[C++获取剪贴板文件路径]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/81188475</link><guid>https://blog.youkuaiyun.com/i72421/article/details/81188475</guid><author>i72421</author><pubDate>Tue, 24 Jul 2018 17:10:33 +0800</pubDate><description><![CDATA[C++与资源管理器交互，获取剪贴板复制的文件路径

#include &amp;lt;oleidl.h&amp;gt;
#include &amp;lt;comdef.h&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;string&amp;gt;

std::vector&amp;lt;std::string&amp;gt; GetPaths()
{
    std::vector&amp;lt;std::strin...]]></description><category></category></item><item><title><![CDATA[命名空间]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/79463196</link><guid>https://blog.youkuaiyun.com/i72421/article/details/79463196</guid><author>i72421</author><pubDate>Tue, 06 Mar 2018 20:21:29 +0800</pubDate><description><![CDATA[命名空间

将全局空间进行切割，可以嵌套使用



定义一个命名空间



namespace name1
{
    int a;
    int add(int a, int b)
    {
        return a + b;
    }
}



命名空间的使用：


指明所属命名空间

通过域解析符指明name1::a

全局的命名空间 ::a
使用using

using na...]]></description><category></category></item><item><title><![CDATA[2.25——进程]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/79381761</link><guid>https://blog.youkuaiyun.com/i72421/article/details/79381761</guid><author>i72421</author><pubDate>Mon, 26 Feb 2018 21:05:47 +0800</pubDate><description><![CDATA[1. 进程的概念

进程是LInux事务管理的基本单元，所有的进程均有自己独立的处理环境和系统资源。进程的环境由单钱系统状态及其父进程信息决定和组成。系统的第一个进程init有内核产生，以后所有的进程都是通过fork()/vfork()创建。系统在内核头文件中定义了进程控制PCB结构体struct tack_struct来管理每个进程的资源。

进程是资源分配的最小单元



2. 进程和程序的区...]]></description><category></category></item><item><title><![CDATA[2.07——队列]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/79279962</link><guid>https://blog.youkuaiyun.com/i72421/article/details/79279962</guid><author>i72421</author><pubDate>Wed, 07 Feb 2018 15:41:20 +0800</pubDate><description><![CDATA[2.07——队列



1. 什么是队列

​   队列（queue）是只允许在一端进行插入操作，而在另一端进行数据操作的线性表。

​   队列是一种先进先出（First In First Out）的线性表，简称FIFO。允许插入的一端成为队尾，允许删除的一端成为队头。假设队列是q=(a1, a2, a3, …, an)，那么a1就是队头元素，而an是队尾元素。这样我们就可以删除时，再试从a1开]]></description><category></category></item><item><title><![CDATA[2.05——栈]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/79280780</link><guid>https://blog.youkuaiyun.com/i72421/article/details/79280780</guid><author>i72421</author><pubDate>Wed, 07 Feb 2018 15:40:58 +0800</pubDate><description><![CDATA[2.05——栈



1. 栈的定义

栈（stack）是限定仅在表尾进行插入和删除操作的线性表。

我们把允许插入和删除的一端成为栈顶（top），另一端为栈底（bottom），不喊任何数据元素的栈成为空栈。栈又成为后进先出（Last In First Out）的线性表，简称LIFO结构。

首先它是一个线性表，也就是，栈元素具有线性关系，即前驱后继关系。只不过它是一种特殊的线性表而已。定义中硕士]]></description><category></category></item><item><title><![CDATA[2.3——链表]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/79247978</link><guid>https://blog.youkuaiyun.com/i72421/article/details/79247978</guid><author>i72421</author><pubDate>Sat, 03 Feb 2018 16:47:28 +0800</pubDate><description><![CDATA[数据结构——链表



链表的存储结构

单链表中，我们在C语言可用结构指针来描述。



/*线性表的单链表存储结构*/
typedef struct node
{
    DataType data;
    struct node *next;
}Node;



链表的初始化

首先定一个链表头指针



Node *list;

初始化函数，创建一个头结点，并把头指针指向头结点，头结点的]]></description><category></category></item><item><title><![CDATA[2.1——线性表]]></title><link>https://blog.youkuaiyun.com/i72421/article/details/79232941</link><guid>https://blog.youkuaiyun.com/i72421/article/details/79232941</guid><author>i72421</author><pubDate>Thu, 01 Feb 2018 20:29:41 +0800</pubDate><description><![CDATA[数据结构——线性表



1. 顺序表的数学定义

若将线性表记为(a1, …, ai+1, ai, ai+1, …, an)，则表中ai-1领先于ai，ai领先于ai+1，称ai-1是ai的直接前去元素，ai+1是ai的直接后继元素。当i=1，2，…，n-1时，ai有且仅有一个直接后继，当i=1,2,3,…,n时，ai有且仅有一个直接前驱。





2. 线性表的顺序存储结构

线性表的顺序存]]></description><category></category></item></channel></rss>