小编Eri*_*c B的帖子

如何存储可变参数模板参数?

是否可以以某种方式存储参数包供以后使用?

template <typename... T>
class Action {
private:        
    std::function<void(T...)> f;
    T... args;  // <--- something like this
public:
    Action(std::function<void(T...)> f, T... args) : f(f), args(args) {}
    void act(){
        f(args);  // <--- such that this will be possible
    }
}
Run Code Online (Sandbox Code Playgroud)

然后是:

void main(){
    Action<int,int> add([](int x, int y){std::cout << (x+y);}, 3, 4);

    //...

    add.act();
}
Run Code Online (Sandbox Code Playgroud)

c++ variadic-templates c++11

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

如何在ASP.NET Core中返回401而不是302?

当用户未登录时,我试图让ASP.NET Core Identity返回401.我已经[Authorize]为我的方法添加了一个属性,而不是返回401,它返回302.我已经尝试了很多建议但是似乎没什么用,包括services.Configureapp.UseCookieAuthentication设置LoginPathnullPathString.Empty.

c# asp.net-core asp.net-core-identity

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

何时使用"await"关键字

我正在写一个网页,它会调用一些Web服务.这些电话看起来像这样:

var Data1 = await WebService1.Call();
var Data2 = await WebService2.Call();
var Data3 = await WebService3.Call();
Run Code Online (Sandbox Code Playgroud)

在代码审查期间,有人说我应该将其更改为:

var Task1 = WebService1.Call();
var Task2 = WebService2.Call();
var Task3 = WebService3.Call();

var Data1 = await Task1;
var Data2 = await Task2;
var Data3 = await Task3;
Run Code Online (Sandbox Code Playgroud)

为什么?有什么不同?

c# web-services task-parallel-library async-await .net-4.5

23
推荐指数
2
解决办法
962
查看次数

concat std :: vector和初始化列表

在c ++ 11中,您可以使用以下精彩语法:

vector<int> numbers = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

有没有办法将另一个初始化列表连接到现有的向量?

numbers.??? ({4, 5, 6});
Run Code Online (Sandbox Code Playgroud)

要么

std::??? (numbers, {4, 5, 6});
Run Code Online (Sandbox Code Playgroud)

c++ c++11

22
推荐指数
3
解决办法
5244
查看次数

使用LINQ搜索两个列表中至少一个匹配项

使用LINQ(查询语法或其他方法)比较两个列表的最佳方法(平均)是什么

var A = new [] { 1, 2, 3, ... };
var B = new [] { 4, 1, 5, ... };

bool match = 
    // Some LINQ expression
Run Code Online (Sandbox Code Playgroud)

match当第一个列表中的至少一个元素(在这种情况下为1)等于第二个元素中的元素时,这将是真的吗?我不需要知道有多少比赛,甚至哪一场比赛,只是至少有一场比赛.

c# linq

18
推荐指数
2
解决办法
8962
查看次数

如何从项目中排除文件夹而不从发布中排除文件夹?

我已经将一个asp.net核心项目迁移到VS2017 RC,它现在支持从项目中排除文件的能力.我已经排除了两个文件夹,它们将这些行添加到我的csproj文件中:

<ItemGroup>
  <Content Remove="wwwroot\dist\**" />
  <Content Remove="wwwroot\lib\**" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这很好用,除了现在这些文件不再发布了.如何从项目中排除这些文件夹,但仍将它们包含在发布中?

msbuild asp.net-core visual-studio-2017

12
推荐指数
2
解决办法
4444
查看次数

Java新字节数组,大小为2 ^ 32

在Java中,它不允许我使用long这样的东西:

long size = 0xFFFFFFFF; //2^32-1

byte [] data = new byte[size];
Run Code Online (Sandbox Code Playgroud)

并且int只能高达0x7FFFFFFF(2 ^ 31-1).是否可以声明这个大小的字节数组?

java

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

Java选择递归函数

我在这里有两个不同的递归函数来反转Java中的字符串:

    Long ms1 = System.currentTimeMillis();
    String str1 = reverse1(str);
    ms1 = System.currentTimeMillis() - ms1;

    Long ms2 = System.currentTimeMillis();
    String str2 = reverse2(str);
    ms2 = System.currentTimeMillis() - ms2;

    System.out.println("Input: " + str);
    System.out.println("  Length: " + str.length());
    System.out.println("Reverse 1:");
    System.out.println("  " + herp + " function calls");
    System.out.println("  " + ms1 +  " milliseconds");
    System.out.println("Reverse 2:");
    System.out.println("  " + derp + " function calls");
    System.out.println("  " + ms2 +  " milliseconds");
}
public static String reverse1(String str){
    herp++;
    if(str.length() == 1) …
Run Code Online (Sandbox Code Playgroud)

java string recursion

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

Lambda用作类成员

是否有可能接受两种不同类型的lambda函数作为类成员而不知道他们的模板参数提前?

struct two_functors {
    std::function<???> a;
    std::function<???> b;
    ...
};
Run Code Online (Sandbox Code Playgroud)

这样的事情是可能的:

void main(){
    vector<two_functors> many_functors;

    int a = 2;
    int b = 3;
    double c = 4.7;
    double d = 8.4;

    two_functors add_and_subtract;
    add_and_subtract.a = [a, b](int x, int y){cout << x + y << endl;};
    add_and_subtract.b = [c, d](double x, double y){cout << x - y << endl;};

    two_functors multiply_and_divide;
    multiply_and_divide.a = [c, d](double x, double y){cout << x * y << endl;};
    multiply_and_divide.b = [a, b](int x, …
Run Code Online (Sandbox Code Playgroud)

c++ lambda functor c++11

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

存储和传递std :: function的 - 按值或按引用?

我无法知道何时通过值或引用传递/存储std :: function对象,或者我需要以某种方式使用移动语义.我有一个存储两个std::function对象的结构:

struct Control{
    char key;
    std::function<void()> press;
    std::function<void()> release;
    Control(char key, std::function<void()> press, std::function<void()> release):
        key(key),press(press),release(release){}
}
Run Code Online (Sandbox Code Playgroud)

我还有一个包含这些结构的向量的类,我想在类似于这个结构的函数中初始化它:

void Screen::init(Player& player){

    this->controls.push_back(Control(
        'W',
        [&player](){player.go(UP);},
        [&player](){player.stop(UP);}));

}
Run Code Online (Sandbox Code Playgroud)

我希望能够将lambda表达式直接传递给Control构造函数,并最终重复执行此操作:

void Screen::update(){
    foreach (auto control : controls){
        if(...) 
            control.press();
        else if (...) 
            control.release();
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到了很多错误和崩溃试图实现这个想法,所以我需要知道

  • 是否应该std::function通过(const?)引用或值来存储,考虑到它们捕获引用?
  • 它们应该通过(const?)引用或值传递给Control构造函数(或以某种方式移动)?
  • 是否可以通过这种方式将控件按值存储在矢量中,或者我是否需要使用替代(unique_ptr<Control>等等)?
  • 当我遍历控件向量时,我应该通过值或引用来访问它们吗?

假设Player&对象始终在范围内Screen::update().

c++ functor c++11 std-function

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