小编Saj*_*jal的帖子

删除版权副本和版权转让-是公共的,私人的还是受保护的?

为了使对象不可复制,我们可以显式删除其复制构造函数和复制分配运算符。

我的问题是:什么是做正确的地方-在publicprivateprotected之类的部分?并且-这种选择有什么区别吗?

c++ access-modifiers deleted-functions c++11

32
推荐指数
4
解决办法
1919
查看次数

"[RASHCNET]"指的是什么属性?

在一些Robocopy选项中,例如:

/a+:[RASHCNET] - 将指定的属性添加到复制的文件中.

/a-:[RASHCNET] - 从复制的文件中删除指定的属性.

[RASHCNET]涉及什么属性?

robocopy

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

不同面额的硬币一个接一个地放置,挑选硬币以最大化总和

不同面额的硬币一个接一个地放置.您需要逐个挑选硬币(除了第一个和最后一个),直到只剩下2个硬币(第一个和最后一个).每次你选择一枚硬币时,你会将它的左右硬币值相乘.问题是以这样的顺序挑选硬币,使得所有乘法的总和最大.例如:

让硬币放置为1,6,7,4

有两种方法可以选择硬币:

第一种方式:首先选择6,这将导致1*7 = 7然后选择7,这将导致1*4 = 4,因此总数将为7 + 4 = 11

第二种方式:首先选择7,这将导致6*4 = 24然后选择6,这将导致1*4 = 4,因此总计将是24 + 4 = 28

28是最大的,这是我们的答案.

我可以通过递归遍历所有可能的情况并比较它们的输出值来找到正确的答案,但这种解决方案效率非常低,因为它需要指数时间.请让我们知道如何更有效地解决这个问题.

编辑: 递归解决方案

int remove (int a [], int end, int pos) {
    int tmp = a[pos];
    for (int i = pos + 1; i <= end; i++) {
        a[i - 1] = a[i];
    } a[end] = 0;
    return tmp;
}

int * insert (int a [], int end, int pos, int val) {
    for (int …
Run Code Online (Sandbox Code Playgroud)

puzzle algorithm

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

使用std :: async调用模板函数的正确方法是什么

我试图了解其用途std::async.我在下面写了模板函数来累积整数数组中的所有条目.

template<typename T, int N, typename = std::enable_if<std::is_integral<T>::value>::type>
T parallel_sum(T(&arr)[N], size_t start = 0, size_t end = N - 1) {
    if (end - start < 1000) {
        return std::accumulate(std::begin(arr) + start, std::begin(arr) + end + 1, 0);
    }
    else {
        size_t mid = start + (end - start) / 2;
        auto res1 = std::async(std::launch::async, parallel_sum<T, N>, arr, start, mid);
        auto res2 = parallel_sum(arr, mid + 1, end);
        return res2 + res1.get();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在main中调用上面的函数时,我得到以下编译错误(以及更多):

错误C2672:'std :: async':找不到匹配的重载函数 …

c++ templates c++11

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

为什么'enable_if'不能在此处禁用此声明

#include<string>
#include<type_traits>

template<typename... Args>
class C {
public:
    void foo(Args&&... args) {      

    }

    template<typename = std::enable_if_t<(0 < sizeof...(Args))>>
    void foo(const Args&... args) {     

    }
};

int main() {
    C<> c;
    c.foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码按预期的方式(由我:))工作,并void foo(Args&&... args)msvc 2015中在运行时调用,但相同的代码甚至无法在gcc 7.3clang 6.0.0中编译,并出现错误:

错误:“ std :: enable_if”中没有名为“ type”的类型;'enable_if'不能用于禁用此声明

我想了解上述代码有什么问题,如何解决?

c++ type-traits enable-if variadic-templates c++14

3
推荐指数
2
解决办法
1136
查看次数