RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-242548

Paul Shipilov's questions

Martin Hope
Paul Shipilov
Asked: 2022-09-09 18:29:04 +0000 UTC

构建具有读取元素通道和完成通道的异步架构

  • 0

遇到了一种情况,我不确定从通道顺序读取时它在 golang 中的行为方式,这应该以来自“输出通道”的完成信号结束。这是一个描述我的代码的示例:

func f() {
    doneCh := make(chan struct{})
    trafficCh := make(chan interface{})

    go write(doneCh, trafficCh)
    read(doneCh, trafficCh)
}


func write(doneCh chan<- struct{}, sendCh chan<- interface{}) {
    defer func() {
        doneCh <- struct{}{}
    }()

    for {
        // Send something in sendCh
    }
}


func read(doneCh <-chan struct{}, recvCh <-chan interface{}) {
    for {
        select {
            case <-doneCh:
                return
            case item := <-recvCh:
                // Something do with item
        }
    }
}

根据标准,如果 select 在不同的通道中收到了多条消息,那么它会随机选择一条。是否有可能当 select 选择一个频道时,它会在doneChand中看到消息recvCh,即 将发生未定义的行为,我们可以在不读取所有元素的情况下结束读取。

golang
  • 0 个回答
  • 0 Views
Martin Hope
Paul Shipilov
Asked: 2020-11-24 22:46:22 +0000 UTC

更改函数内的指针(C 语言)

  • 1

我想问一下改变函数中的指针,也就是改变它的地址,而不是它指向的值。在我的函数中,可能会出现需要将指针扩展为二维字符串数组的情况。起初,我将通常的传递给函数char** argv,但是当扩展发生时argv,它本身以不同的方式发生了变化argv。main我尝试传入函数char*** argv并使用(*argv),就像argv前一个案例一样,这一切都奏效了。我大概可以理解为什么会发生这种情况,但我想听听这种情况的更多学术理由。而且我还想问为什么如果我在函数中传递一个二维数组清理argv,那么似乎一切正常,清理函数代码:

void freeArgv(char** argv, const size_t argc) {
    if (argv == NULL) {
        return;
    }

    for (size_t i = 0; i < argc; i++) {
        if (argv[i] != NULL) {
            free(argv[i]);
        } else {
            break;
        }
    }

    free(argv);
}
c
  • 1 个回答
  • 10 Views
Martin Hope
Paul Shipilov
Asked: 2020-10-08 21:58:17 +0000 UTC

查找不大于第i个且其索引大于i的元素的第一次出现的算法优化

  • 6

我解决了这个问题,在这里我得到了 time_lim,我需要优化这个算法,让它通过 2 次测试,4-5 毫秒是不够的。该算法查找不大于第 i 个且其索引大于 i 的元素的第一次出现,如果不存在,则输出 -1。

 int i(0),j(0);
 int n1;
 v_t v;  //вектор типа int
 auto it(v.begin());

bool perd(int n)
{
    ++j;
    if(n1>n)
    {
        cout<<j<<' ';
        return true;
    }
    return false;
}

void fun(int n)
{
    ++i;
    n1=n;
    it=find_if(v.begin()+i,v.end(),perd);
    if(it==v.end())
        cout<<-1<<' ';
    j=i;
}

void funcin(int &n)
{
    cin>>n;
}

int main()
{
    cin >> n1;
    v.resize(n1);
    for_each(v.begin(),v.end(),funcin);
    for_each(v.begin(),v.end(),fun);
    return 0;
}

任务全文:

Lineland是一个一维世界,是一条直线,上面有N个城市,从0到N-1依次编号。从第一个城市到零一个的方向称为西,而在相反的方向 - 东。

当危机突然在莱恩兰开始时,世界上所有的居民都开始经历深深的动荡。谣言开始在莱兰兰流传,东部的生活比西部的好。大林地大迁徙就这样开始了。世界各地的居民,在整个城市中,向东走,离开他们的家乡街道,一直移动,直到他们来到一个平均生活成本低于他们自己的城市。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Paul Shipilov
Asked: 2020-08-31 19:30:43 +0000 UTC

后缀和前缀表示法之间的区别[重复]

  • -3
这个问题已经在这里得到了回答:
后缀和前缀++ (3个答案)
5年前关闭。

我读了 Prat 的书,他写道后缀表示法工作得更快,但后来在他的书中,他for在一个循环中使用了前缀表示法。如果他自己写它更慢,他为什么要使用它。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Paul Shipilov
Asked: 2020-08-21 04:20:08 +0000 UTC

STL c ++中的双端队列容器

  • 9

我开始研究 STL 库,发现了一个像deque.

c++
  • 1 个回答
  • 10 Views
Martin Hope
Paul Shipilov
Asked: 2020-08-14 02:14:06 +0000 UTC

Monogame 中的 Initialize()

  • 0

我开始学习C#Framework MonoGame/XNA语言,我已经了解程序的结构,但我不明白为什么需要该方法。Initialize()

c#
  • 1 个回答
  • 10 Views
Martin Hope
Paul Shipilov
Asked: 2020-07-30 21:20:48 +0000 UTC

时间和内存优化

  • 0

任务:
对于正整数 n,我们定义函数f:

f(n) =  - 1 + 2 - 3 + .. + ( - 1)^n*n

计算f(n)给定的整数 n。

for超过时限我先写了:

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

int main()
{
    int sum(0), n;
    cin >> n;
    for (int i(1); i <= n; ++i)
        sum += pow(-1, i)*i;
    cout << sum;
    system("pause");
    return 0;
}

然后递归超出内存限制:

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

int n, sum(0), i(1);

void rek()
{
    while (i <= n)
    {
        sum += pow(-1, i)*i;
        ++i;
        rek();
    }
}

int main()
{
    cin >> n;
    rek();
    cout << sum;
    system("pause");
    return 0;
}

帮助优化代码(测试n = 1000000000)。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Paul Shipilov
Asked: 2020-07-23 02:02:36 +0000 UTC

不明白为什么输出错误(任务答案)

  • -4

程序统计数字4或7的个数,如果它们的个数能被7和4组成的数整除,则输出YES...

bool test(int z)
{
        while (z)
        {

            if (z % 10 != 4 || z % 10 != 7)
                return false;
        z /= 10;
        }
        return true;
    }
    int main()
    {
        long long x;
        cin >> x;
        int k = 0;
        while (x)
        {
            if (x % 10 == 4 || x % 10 == 7)
                ++k;
            x /= 10;
        }
        if (test(k) == true)
            cout << "YES";
        else
            cout << "NO";
        return 0;
    }
c++
  • 2 个回答
  • 10 Views
Martin Hope
Paul Shipilov
Asked: 2020-07-16 01:25:44 +0000 UTC

抛出文档向量

  • 1
#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    int i, k, n;
    double s = 0, j;
    cin >> n;
    vector <int> v(n);
    for (i = 0; i < n; ++i)
    {
        cin >> v[i];
        s += v[i];
    }
    s /= 2;
    j = s;
    sort(v.begin(), v.end());
    i = 0;
    while (s >= 0)
    {
        s -= v[i];
        ++i;
    }
    k = i;
    int z = 0;
    i = n - 1;
    while (j >= 0)
    {
        s -= v[i];
        ++z;
        --i;
    }
    if (n == 1)
        cout << 1;
    else {
        if (k < z)
            cout << (k + 1);
        else
            cout << (z + 1);
    }
    //system("pause");
    return 0;
}

c++
  • 1 个回答
  • 10 Views
Martin Hope
Paul Shipilov
Asked: 2020-03-31 03:04:57 +0000 UTC

未处理的异常堆栈溢出

  • -3

程序崩溃并出现以下错误:

p.exe 中 0x00821CC9 处未处理的异常:0xC00000FD:堆栈溢出(参数:0x00000000、0x006E2000)

为什么会这样?

程序代码:

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    long long v[1901][2015];
    long long p[1901][2015];
    long long i, j, k = 1, n = 0;
    for (i = 0; i < 1901; ++i)
        for (j = 0; j < 2015; ++j)
        {
            p[i][j] = k;
            ++k;
        }
    k = 1;
    for (i = 0; i < 2015; ++i)
        for (j = 0; j < 1901; ++j)
        {
            v[j][i] = k;
            ++k;
        }
    for (i = 0; i < 1901; ++i)
        for (j = 0; j < 2015; ++j)
            if (v[i][j] == p[i][j])
                ++n;
    cout << n;
    system("pause");
    return 0;
}
c++
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5