小编Joã*_*ulo的帖子

为什么在C++ 14中使用std :: bind over lambdas?

在C++ 11之前我使用过boost::bind或者boost::lambda很多.该bind部分使其成为标准库(std::bind),另一部分成为核心语言(C++ lambdas)的一部分,并使lambdas的使用变得更加容易.如今,我几乎没用std::bind,因为我几乎可以用C++ lambdas做任何事情.std::bind我可以想到一个有效的用例:

struct foo
{
  template < typename A, typename B >
  void operator()(A a, B b)
  {
    cout << a << ' ' << b;
  }
};

auto f = bind(foo(), _1, _2);
f( "test", 1.2f ); // will print "test 1.2"
Run Code Online (Sandbox Code Playgroud)

相当于C++ 14的等价物

auto f = []( auto a, auto b ){ cout << a << ' ' << b; }
f( "test", 1.2f …
Run Code Online (Sandbox Code Playgroud)

c++ lambda bind c++14

56
推荐指数
3
解决办法
3万
查看次数

新的std :: map :: erase()签名C++ 17

根据这个答案,iterator必须可以隐含地转换为const_iterator.insert_or_assign()既然如此,正如我们可以看到的那样,为什么在C++ 17中添加了新的签名std::map::erase()

在C++ 11中,我们有 iterator erase( const_iterator pos );

在C++ 17中,我们现在有了 iterator erase( iterator pos );

是不是C++ 11签名足以接收iteratorconst_iterator

c++ iterator const-iterator c++11 c++17

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

更改X和Y轴字体颜色

如何更改X和Y轴标签的颜色?我试图在fontColor内部使用,scaleLabel但我可能在错误的地方做它?

我试图内将其scale作为可以在源代码中找到.我也尝试过scales甚至内部xAxes.

var options = {
type: 'bar',
    data: {
        labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
        datasets: [{
            label: '# of Votes',
            data: [12, 19, 3, 5, 2, 3],
            backgroundColor: 'red',
            borderWidth: 1
        }]
    },
    options: {
        scale: {
            scaleLabel:{
                fontColor: 'red'
            }
        },
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero:true
                }
            }]
        }
    }
 };
Run Code Online (Sandbox Code Playgroud)

在线复制

在此输入图像描述

我一直在检查文档,但对我来说似乎并不是很清楚.而由于chart.js没有提供足够的例子,有时候发现事情并不容易......

javascript chart.js

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

Bootstrap模态背景='静态'不起作用

首先,我用这个打开我的模态:

$('#myModal').modal('show');
Run Code Online (Sandbox Code Playgroud)

然后,在另一种情况下,我需要在按ESC /点击外面时这个相同的模态不会关闭,所以我使用这个:

$('#myModal').modal({
    backdrop: 'static',
    keyboard: false
})
Run Code Online (Sandbox Code Playgroud)

但是一旦我用第一种方法打开我的模态,第二种方法就不起作用了.任何提示?

如何强制backdrop值切换工作?

bootstrap-modal twitter-bootstrap-3

11
推荐指数
5
解决办法
1万
查看次数

constexpr和std :: cout在函数上起作用,但不在lambda中

为什么constexpr不使用std::cout,但可以使用printf

#include <iostream>
constexpr void f() { std::cout << ""; } //error
constexpr void g() { printf(""); } //ok
Run Code Online (Sandbox Code Playgroud)

为什么std::cout使用lambdas constexpr

#include <iostream>
int main () {
    auto h = []() constexpr { std::cout << ""; }; //ok
}
Run Code Online (Sandbox Code Playgroud)

c++ cout constexpr c++17

8
推荐指数
2
解决办法
275
查看次数

专门化模板数据类型的模板

我有这种情况:

#include <vector>

template<typename T>
T f() { return T(); }

template<>
template<typename T>
std::vector<T> f<std::vector<T>>() {
    return { T() };
}

int main(){
    f<std::vector<int>>();
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试专门针对的模板std::vector<T>,但出现此错误:

error: too many template-parameter-lists

std::vector<T> f<std::vector<T>>() {
Run Code Online (Sandbox Code Playgroud)

我该如何专攻std::vector<T>

c++ templates template-specialization

7
推荐指数
2
解决办法
94
查看次数

在运行代码时更新 kivy 小部件的属性

我想在运行某些东西时更新 kivy 小部件的属性......

例子:

class app(App):
    def build(self):
        self.layout = Layout()
        self.name = Label(text = "john")
        self.layout.add_widget(self.name)
        return self.layout

    def update(self):
        for i in range(50): #keep showing the update
            self.name.text = str(i)
            #maybe some sleep here

obj = app()
obj.run()
obj.update()
Run Code Online (Sandbox Code Playgroud)

这将只显示循环的最终结果。我想在循环进行时不断更新 label.text 。

我寻找诸如 bind()、setter() 和 ask_update() 函数之类的东西,但如果是这些函数,我不知道如何使用它们。

- - - - - - - - - 编辑 - - - - - - - - - - - -

试图适应inclement回答(使用时钟在其他线程中运行更新函数),我得到了下面的代码,试图遵循我的问题的真实想法,但仍然无法正常工作:

class main():
    def __init__(self, app):
        self.app …
Run Code Online (Sandbox Code Playgroud)

python refresh kivy

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

递归函数内存使用情况

我这里有一个递归函数:

def pow(x, n):
    if n == 0:
       return 1
    else:
       return x * pow(x, n-1)
answer = pow(a, b)
Run Code Online (Sandbox Code Playgroud)

以及迭代:

def pow(x, n): # n != 0
    answer = x
    while n > 1:
        answer *= x
        n -= 1
    return answer
answer = pow(a, b)
Run Code Online (Sandbox Code Playgroud)

我想知道它们中哪一个使用更多内存。我认为递归使用更多内存,因为它为每个函数调用保留传递的“变量”。如果这是正确的,那么解释这一点的形式主义是什么?有没有一种很好的方法来跟踪代码内的内存使用情况?


我不认为这是重复的。主要问题不是关于跟踪内存使用情况,而是关于递归内存使用情况。

python memory recursion

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

检查值是哪个区间索引的最快方法

我有这样的矢量:

intervals = [6, 7, 8, 9, 10, 11] #always regular
Run Code Online (Sandbox Code Playgroud)

我想检查一个值是哪个区间索引.例如:间隔的索引8.5是,是3.

#Interval : index
6  -> 7   : 1
7  -> 8   : 2
8  -> 9   : 3
9  -> 10  : 4
10 -> 11  : 5
Run Code Online (Sandbox Code Playgroud)

所以我做了这个代码:

from numpy import *
N = 8000
data = random.random(N)
step_number = 50
max_value = max(data)
min_value = min(data)
step_length = (max_value - min_value)/step_number
intervals = arange(min_value + step_length, max_value + step_length, step_length )
for …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

window.location 断开 websocket

我想打开下载链接而不打开空白页面(然后,我不会使用window.open)。然后我使用window.location.hrefor window.location.assign。但问题是这两种方法都会断开我的 websockets 连接。我该如何解决这个问题?

为了更清楚起见,没有抛出任何错误消息,我在 chrome 上测试了它。Websocket 就停止工作了。

javascript window.location websocket

6
推荐指数
0
解决办法
270
查看次数