小编Alb*_*ert的帖子

模板的实例化

如果我有以下代码:

template <typename T = int>
struct mystruct {
  using doublestruct = mystruct<double>;
}

mystruct<>::doublestruct obj;
Run Code Online (Sandbox Code Playgroud)

这会实例化mystruct<int>模板吗?或者只是mystruct<double>实例化?

c++ templates

24
推荐指数
2
解决办法
539
查看次数

生成所有组合时的复杂性

面试问题我开始说"这可能通过为数组元素生成所有可能的组合来解决"通常意味着让我找到更好的东西.

无论如何,我想补充"我肯定更喜欢另一种解决方案,因为这是O(X)"..问题是:为给定集合生成所有组合的O(X)复杂度是多少?

我知道有n!/(nk)!k!组合(二项式系数),但如何从中得到大O符号?

language-agnostic algorithm big-o combinations time-complexity

12
推荐指数
3
解决办法
7039
查看次数

设置n个数字的S - 具有一个子集,其中S中每个元素的概率相等

我有这个问题

您将获得一组n个数字.您必须从S中选取k个数的子集S',使得在S'中出现的S的每个元素的概率相等(即,每个元素以概率k/n选择).你可以只对这些数字进行一次传球.如果n未知怎么办?

我甚至有一个解决方案:http://www.algorithm.cs.sunysb.edu/algowiki/index.php/TADM2E_2.43

仍然:我根本不理解问题文本.

我给了一组n个数字.精细.我需要选择一个k数的子集(可能有2 ^ n个子集),这样S中每个元素出现的概率都是相等的......对我来说,明显的答案就是抓住空S'集合:S中的每个元素都有0个概率在S'中.

如果这是不可接受的(并且应该已经说明了),我想我应该在S中计算最重复的元素(出现T次)并使其他所有元素在S'中具有正好的T实例(它应该仍然是子集,如果元素包含在S)中.

我真的不了解优先级队列解决方案,也不了解k/n概率.有人可以帮我解决这个问题吗?

algorithm set

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

如何使用 node.js (express) 处理 get 请求

我是一个 node.js 新手,我正在用它创建我的第一个大型应用程序(我正在使用 express)。当用户使用 get 请求加载 id 时,我需要让我的网页执行一些 javascript canvas-drawing,例如

www.mywebsite.com/page?id=22
Run Code Online (Sandbox Code Playgroud)

我知道我可以用一个简单的方法来处理这个

var express        =        require("express");
var app            =        express();
app.get('handle',function(request,response){
    //request.id
});
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用该 ID 的要求绘图启动我的网页。互联网上关于 express 和 get 的每个教程都解释了如何处理 get 请求……这个问题是关于“接下来会发生什么?”

改写:我不知道我应该如何告诉 html 页面“您需要从 express 中绘制与此 ID 关联的内容”,然后将该页面发送回用户。

javascript get node.js express

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

Lambda重新初始化矢量 - 为什么它有效?

为什么以下编译?

vector<int> vec;

auto lambda = [ vec (move(vec)) ]() {  //??      
};
Run Code Online (Sandbox Code Playgroud)

如何重新初始化已分配的vec变量vec (move(vec))?这不是调用移动构造函数吗?

如果我写:

vector<int> vec;
vec (move(vec));
Run Code Online (Sandbox Code Playgroud)

这是无效的

c++ lambda c++14

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

按值返回到右值引用

我正在研究右值引用,我对以下代码有疑问:

string func() {
    return "Paul";
}

int main()
{
    string&& nodanger = func();
    // The lifetime of the temporary is extended
    // to the life-time of the reference.
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是:什么func()回归?

我相信这是发生的事情:

  • func返回一个prvalue"Paul"(由于rvalue->指针转换,这是一个const char*吗?)
  • 隐式构造一个字符串对象(使用哪个ctor?)
  • 由于引用折叠规则,它必然会"nodanger"(这与字符串和普通引用有什么不同?)

c++ rvalue-reference c++11

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

使用前参考破坏对象

我想用a创建一个对象

object().addSomething().addSomethingElse()
Run Code Online (Sandbox Code Playgroud)

语法,然后在代码的一部分中使用它,但以下代码将不起作用:

class myObj {
public:
 myObj() {}
 ~myObj() { std::cout << "dtor called" << std::endl; }
 myObj& someOtherOperation() {
  return *this;   
 }
};

int main() {
    auto& elementRef = myObj().someOtherOperation();
    {
        std::cout << "some stuff that uses elementRef" << std::endl;
    }  
}
Run Code Online (Sandbox Code Playgroud)

析构函数使用引用的代码部分之前调用.

我想避免昂贵的对象复制操作并保持

object().addSomething().addSomethingElse()
Run Code Online (Sandbox Code Playgroud)

语法,但似乎引用不允许.对此有何解决方案?

c++

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

返回临时,为什么不是左值参考?

右值引用是临时对象吗?为什么不进行以下编译?我以为这个函数返回了一个右值引用

main.cpp:40:12: error: no viable conversion from 'hello3 ()' to 'hello4'
    hello4 lol = returning;
Run Code Online (Sandbox Code Playgroud)

在代码中

#include <iostream>
#include <string>
#include <vector>

class hello {
  public:  
};


class hello2 {
  public:  
};

class hello3 {
  public:  
  hello obj1;
  hello2 obj2;

};


class hello4 {
 public:

 hello4(hello3&&) {
  std::cout << "he";   
 }

};

hello3 returning() {
    hello a;
    hello2 b;
    return {a,b};

}

int main()
{
    hello4 lol = returning;
}
Run Code Online (Sandbox Code Playgroud)

我读了移动语义文档,但我仍然不明白为什么上面没有绑定到右值引用

c++

-3
推荐指数
1
解决办法
154
查看次数