小编And*_*zos的帖子

将git提交应用于未加工的工作树?

假设我有8个提交和一个分支(master)的线性git历史记录:

1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> [8=master]
Run Code Online (Sandbox Code Playgroud)

我想将master转移到4(我可以做git branch -f master 4):

1 -> 2 -> 3 -> [4=master] -> 5 -> 6 -> 7 -> 8
Run Code Online (Sandbox Code Playgroud)

现在工作树处于状态4.

我现在想要将更改应用4 -> 8到我的工作树作为补丁.

也就是说,在不影响.git文件夹的状态的情况下,我想将更改从未4->8分阶段应用到我的工作树.在此之后,工作树应该处于状态8,但是提交的状态和主分支应该处于状态4.

另一种说法:假装将主人移动到4后,我手动将4-> 8的更改手动更改为我的工作树而不将其添加到索引中.结果应该是一样的.

最简单的方法是什么?

git

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

为什么天真的C++矩阵乘法比BLAS慢100倍?

我正在研究大型矩阵乘法并运行以下实验来形成基线测试:

  1. 从std normal(0 mean,1 stddev)随机生成两个4096x4096矩阵X,Y.
  2. Z = X*Y.
  3. Z的Sum元素(以确保它们被访问)和输出.

这是天真的C++实现:

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    constexpr size_t dim = 4096;

    float* x = new float[dim*dim];
    float* y = new float[dim*dim];
    float* z = new float[dim*dim];

    random_device rd;
    mt19937 gen(rd());
    normal_distribution<float> dist(0, 1);

    for (size_t i = 0; i < dim*dim; i++)
    {
        x[i] = dist(gen);
        y[i] = dist(gen);
    }

    for (size_t row = 0; row < dim; row++)
        for (size_t col = 0; col < …
Run Code Online (Sandbox Code Playgroud)

c++ linux matlab matrix-multiplication c++11

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

维恩图绘制算法

有人询问GraphViz中重叠的子集群并得到以下响应:

抱歉,没有.常规子图可以共享节点而不暗示子集包含但不包含集群.问题出在图纸上.如果簇可以任意重叠,绘制它们就成了绘制维恩图的问题,因为没有好的算法.

什么是"绘制维恩图的问题"的正式定义或例子?为什么它(我认为NP完全/硬)很难?(额外点:将减少量描述为一个众所周知的NP完全问题)

algorithm venn-diagram

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

GCC 4.7字符串文字的源字符编码和执行字符编码?

Linux/x86_64上的GCC 4.7是否具有默认字符编码,通过它可以验证和解码C源文件中字符串文字的内容?这是可配置的吗?

此外,当将字符串文字中的字符串数据链接到输出的数据部分时,它是否具有默认的执行字符编码?这是可配置的吗?

在任何配置中,是否可以使源字符编码与执行字符编码不同?(那将是gcc在字符编码之间进行转码吗?)

c linux gcc character-encoding string-literals

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

C++ 11仅接受字符串文字的函数?

我想编写一个C++ 11函数,它只接受字符串文字作为参数:

 void f(const char* s) { static_assert(s is a string literal); ... }
Run Code Online (Sandbox Code Playgroud)

那是:

 f("foo"); // OK

 char c = ...;
 f(&c); // ERROR: Doesn't compile

 string s = ...;
 f(s.c_str()); // ERROR: Doesn't compile

 etc
Run Code Online (Sandbox Code Playgroud)

反正有没有实现这个?函数的签名对更改是开放的,添加宏或任何其他语言功能的使用也是如此.

如果这不可能,那么最接近的是什么?(用户定义的文字可以帮助吗?)

如果不是GCC 4.7/Linux中有特定于平台的方式吗?

c++ linux gcc c++11

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

寻找路径组合的算法?

想象一下,你有一个跳舞的机器人,n在起源于原点P_0=的欧洲空间(0,0,...,0).

机器人可以进行m各种舞蹈动作D_1, D_2, ..., D_m

D_i是一个n整数的向量(D_i_1, D_i_2, ..., D_i_n)

如果机器人使舞蹈移动而i不是其位置改变D_i:

P_{t+1} = P_t + D_i

机器人可以按照自己的意愿和任何顺序进行任何多次的舞蹈动作.

k-dance定义为k舞蹈动作的序列.

很明显,有m^k可能是k-dances.

我们有兴趣知道k-dance的可能终点位置的集合,并且对于每个终点位置,在该位置处有多少k-dances结束.

一种方法是这样做:

P0 = (0, 0, ..., 0);

S[0][P0] = 1

for I in 1 to k
    for J in 1 to m
        for P in S[I-1]
            S[I][P + D_J] += S[I][P]
Run Code Online (Sandbox Code Playgroud)

现在S[k][Q]将告诉你有多少k-dances在Q位置结束

假设n,m,|D_i| …

algorithm math graph linear-algebra

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

`*this`在成员函数体外?

在C++标准的5.1.1/3中[expr.prim.general]

与其他上下文中的对象表达式不同,*为了在成员函数体外部进行类成员访问,不需要这是完整类型.只有在声明之前声明的类成员才可见.

然后这个例子:

struct A {
    char g();
    template<class T> auto f(T t) -> decltype(t + g()) 
    { return t + g(); }
};
template auto A::f(int t) -> decltype(t + g());
Run Code Online (Sandbox Code Playgroud)

你能解释一下这个引用和例子吗?究竟是什么在这里展示?

c++ c++11

10
推荐指数
2
解决办法
401
查看次数

单个限定名称和两个连续的C++ 11歧义?

以下C++ 11程序是否格式错误?

struct a
{
    struct b {  };

    void f() {};
};

extern struct a b;

struct a ::b;

int main()
{
    b.f();
}
Run Code Online (Sandbox Code Playgroud)

为什么/为什么不呢?

这里感兴趣的是这一行:

struct a ::b;
Run Code Online (Sandbox Code Playgroud)

这是内部阶级的前瞻性声明a::b吗?

或者这是全局变量的定义b?相当于:

struct a (::b);
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

C++ 11声明`:: T i`?

以下C++ 11翻译单元是否格式良好?

typedef int T;
::T i;
Run Code Online (Sandbox Code Playgroud)

如果是这样,它似乎与标准语法不匹配.

simple-type-specifier应匹配::T,但语法是:

simple-type-specifier:
    nested-name-specifier_opt type-name
Run Code Online (Sandbox Code Playgroud)

和一个nested-name-specifier不能::单独匹配,所以simple-type-specifier无法比拟::T.

这是标准缺陷吗?

c++ c++11

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

积分或枚举类型的T t {x}和T t = {x}之间的差异?

在C++ 14中:

对于任何整数或枚举类型T以及任何表达式expr:

之间有什么区别:

struct S { T t { expr }; };
Run Code Online (Sandbox Code Playgroud)

struct S { T t = { expr }; };
Run Code Online (Sandbox Code Playgroud)

更新:

我得到了[dcl.init.list]p3b5:

如果初始化列表具有E类型的单个元素且T不是引用类型或其引用类型与E引用相关,则从该元素初始化对象或引用.

我相信这个引用适用于直接列表初始化复制列表初始化.

所以我认为答案是否定的,没有区别.

c++ initialization language-lawyer c++14

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