小编inf*_*inf的帖子

为BinaryTree类创建迭代器的算法

我想在我的Parametrized BinaryTree类中添加Bi-Directional Iterator(就像std :: set导出的Iterator),但是我无法想出任何算法.

简单的二叉树节点结构是,它包含三个指针,左,右,父:

节点结构

c++ binary-tree iterator data-structures

2
推荐指数
1
解决办法
1165
查看次数

为什么std :: atomic_compare_exchange会更新预期值?

为什么std::atomic_compare_exchange及其所有兄弟姐妹都会更新通过的期望值?

我想知道除了循环中给定的简单性之外是否有任何原因,例如:是否有一个内部函数可以在一次操作中做到这一点以提高性能?

c++ multithreading atomic compare-and-swap c++11

1
推荐指数
1
解决办法
408
查看次数

容器和算法中的auto_ptr与unique_ptr

我知道auto_ptr搞砸了复制语义,因此在容器中使用是不安全的,因为将一个auto_ptr复制到另一个会使source = NULL指针(这不是像移动语义一样吗?).但话说再说一次,unique_ptr根本无法复制,只能转让所有权.那么,unique_ptr如何在需要使用复制操作来复制和重新排列元素的容器和算法中使用?

c++ algorithm containers smart-pointers c++11

1
推荐指数
1
解决办法
248
查看次数

添加更多内核时,Go服务器性能是相同的

我试图了解当添加更多内核时go服务器如何扩展,但似乎我看不到改进,我不知道为什么.

增加核心时,似乎没有任何变化.我是否需要在代码中执行某些操作才能让它知道我想要使用多个核心?这对性能有帮助吗?

我用于测试的代码是一个输出"Hello World"的简单服务器.

package main

import (
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
        w.Write([]byte("Hello World"))
    })
    http.ListenAndServe(":80", nil)
}
Run Code Online (Sandbox Code Playgroud)

我正在对virtualbox进行测试.

这些结果有1个核心:

$ nproc
1
Run Code Online (Sandbox Code Playgroud)

使用1核心的ab进行测试:

$ ab -n 10000 -c 1000 http://127.0.0.1/
Run Code Online (Sandbox Code Playgroud)

来自ab的结果为1核心:

Concurrency Level:      1000
Time taken for tests:   1.467 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      1280000 bytes
HTML transferred:       110000 bytes
Requests per second:    6815.42 [#/sec] (mean)
Time per request:       146.726 [ms] (mean)
Time per request: …
Run Code Online (Sandbox Code Playgroud)

multithreading go

1
推荐指数
1
解决办法
153
查看次数

概念上的 cv 限定符需要表达式参数列表

我有以下使用概念的代码:

struct bar {
    void foo() {}
};

template <typename T>
concept Fooable = requires (const T& t) { // const bar& t doesn't support t.foo()
    { t.foo() };
};

template <typename Fooable>
void callfoo(Fooable bar)
{
    bar.foo();
}

int main()
{
    bar b;
    callfoo(b);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望代码不会编译,因为bar不支持调用foo()const 实例。但是它确实编译精细链接

cppreference 上的参数列表描述在这方面没有太大帮助:

参数列表 - 一个逗号分隔的参数列表,就像在函数声明中一样,除了不允许使用默认参数并且它不能以省略号结尾(除了表示包扩展的省略号)。这些参数没有存储、链接或生命周期,仅用于帮助指定需求。这些参数在需求序列的结束 } 之前都在范围内。

我是否误解了 cv 限定符在 requires 表达式参数列表中的用途?我完全错过了什么吗?我对 cppreference 有一些使用通用参考参数的示例感到更加困惑,因此其中必须有一些要点。

我正在使用gcc9with -fconcepts(尽管 gcc trunk 和 clang 与 …

c++ c++-concepts c++20

1
推荐指数
1
解决办法
60
查看次数

C++ 11 Threads,它是有效的代码吗?

我正在玩C++ 11的线程功能.但是下面的代码不能在clang(3.5)和gcc(4.9.2)下编译.

#include <iostream>
#include <thread>

void add(int& x) {
    x += 1;
}

int main (int argc, char const *argv[])
{
    int x{ 5 };
    int y{ 8 };

    std::thread my_thread_1{ add, x };
    std::thread my_thread_2{ add, y };
    my_thread_1.join();
    my_thread_2.join();

    std::cout << x << " " << y << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它是有效的C++ 11吗?

c++ multithreading c++11

0
推荐指数
1
解决办法
59
查看次数

Golang:给定句子的缩写

在给定的句子中,如何使用GO编程语言查找该句子的首字母缩写词。例如,“ Hello,world!”变成“ HW”。到目前为止,我已经尝试了以下句子:

package main

import (
    "bufio"
    "fmt"
    "strings"
    "os"
)
func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter text: ")
    text, _ := reader.ReadString('\n')
    fmt.Print(strings.Split(text," "))
    fmt.Print(strings.Index(text, ))
}
Run Code Online (Sandbox Code Playgroud)
  1. 接受用户的输入
  2. 发生空白时拆分。
  3. 接下来是什么?

任何帮助表示赞赏。

谢谢

go

0
推荐指数
1
解决办法
618
查看次数

为什么并发代码需要更多时间来执行

我有一个名为linearize的函数...我正试图加快执行速度,但却惊讶地发现它变慢了.我错过了什么或搞砸了基本面......

根据我的理解,事情应该改善..

谢谢,

package main

import (
    "fmt"
    "math"
    "sync"
    "time"
)

var rgb []float64

func linearizeWithWg(v float64, idx int, wg *sync.WaitGroup) {
    defer wg.Done()

    if v <= 0.04045 {
        rgb[idx] = v / 12.92
    } else {
        rgb[idx] = math.Pow((v+0.055)/1.055, 2.4)
    }
}

func linearizeWithGoR(v float64) float64 {
    res := make(chan float64)

    go func(input float64) {
        if input <= 0.04045 {
            res <- input / 12.92
        } else {
            res <- math.Pow((input+0.055)/1.055, 2.4)
        }
    }(v)
    return <-res
}

func …
Run Code Online (Sandbox Code Playgroud)

concurrency multithreading go

-2
推荐指数
1
解决办法
97
查看次数

比较向量&lt;int&gt;是否几乎相等,STL 算法 - C++

我正在做一个自动取款机任务。我应该在 STL 算法的帮助下比较两个不同向量中给定范围内的所有向量元素是否几乎相等。

在这种情况下几乎相等:2。

有人知道这个问题的解决方案吗?

c++ compare equals vector

-4
推荐指数
1
解决办法
1955
查看次数