标签: digraphs

这个笑脸胡子的表情是什么:"<:] {%>"?

我遇到了以下程序,它编译时没有错误甚至是警告:

int main(){
  <:]{%>; // smile!
}
Run Code Online (Sandbox Code Playgroud)

实例.

程序做了什么,笑脸表达是什么?

c++ expression emoticons digraphs

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

什么是C中的>>> =运算符?

由同事作为一个谜题,我无法弄清楚这个C程序实际上是如何编译和运行的.什么是这个>>>=运算符和奇怪的1P1文字?我在Clang和GCC进行了测试.没有警告,输出是"???"

#include <stdio.h>

int main()
{
    int a[2]={ 10, 1 };

    while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] )
        printf("?");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c obfuscation bit-shift literals digraphs

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

为什么C和C++中有有关图?

我今天学到了C99和C++中的有向图.以下是有效的计划:

%:include <stdio.h>

%:ifndef BUFSIZE
 %:define BUFSIZE  512
%:endif

void copy(char d<::>, const char s<::>, int len)
<%
    while (len-- >= 0)
    <%
        d<:len:> = s<:len:>;
    %>
%>
Run Code Online (Sandbox Code Playgroud)

我的问题是:它们为什么存在?

c c++ c99 digraphs

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

今天是否使用了有向图和三字母?

鉴于曾经有过在C和C++中使用有向图和三字符的理由,是否有人将它们放入今天编写的代码中?是否还有大量遗留代码仍在维护中并包含它们?

(注:这里的"有向图"并不会意味着"有向图".这两个有向图三字母有多种含义,但这里的用途是一样的序列??=<:站在像字符#[)

c c++ digraphs trigraphs

39
推荐指数
4
解决办法
6963
查看次数

在C++中引入'和'和'或'替代令牌是什么时候?

我刚读过Reddit的这篇精彩文章.

他们提到and,并or成为"替代令牌",以&&||

到目前为止我真的没有意识到这些.当然,每个人都知道的二图和三图表,但andor?从何时起?这是标准的最新成员吗?

我刚刚使用Visual C++ 2008进行了检查,它似乎并没有将这些视为语法错误.这是怎么回事?

c++ syntax keyword digraphs trigraphs

37
推荐指数
4
解决办法
6484
查看次数

C++ 1z为什么不删除有向图和三字母?

C++ 1z将删除trigraphs.IBM严重反对这一点(此处此处),因此似乎存在删除/不删除双方的争论.

但既然决定删除三角形,为什么要留下有向图?我认为没有任何理由可以保留有关三角形的原因(这显然不足以保留三角形).

c++ standards digraphs trigraphs c++17

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

<:无法开始模板参数列表

我收到错误<:无法在g ++编译器上开始模板参数列表.码

template<typename T> class SomeClass;
class Class;

SomeClass<::Class>* cls;
Run Code Online (Sandbox Code Playgroud)

c++ parsing templates digraphs c-preprocessor

18
推荐指数
3
解决办法
2627
查看次数

声明lambda时<:和:>是什么意思?

我偶然发现了以下lambda语法,我不明白:

#include <iostream>

template<typename Callback>
void do_it(Callback callback) {
        callback();
}

template<typename T>
void p() {
        std::cout << __PRETTY_FUNCTION__ << std::endl;
}

int main() {
        auto a = <:&:> { };
        p<decltype(a)>();
        do_it(<:&:> { std::cout << "Hello" << std::endl; }); //this
}
Run Code Online (Sandbox Code Playgroud)

上面的程序产生一个输出:

void p() [with T = main()::__lambda0]
Hello
Run Code Online (Sandbox Code Playgroud)

你能解释一下,是什么<:&:> {/* ... */}意思?是否有可能将这种方式声明为带有参数的lambda?

c++ lambda digraphs c++11

18
推荐指数
1
解决办法
2139
查看次数

vim中的版权特征

我之前通过一些键的组合在vim中获得了这个版权符号.现在有人可以帮我吗?我根本无法回想起来.

此外,如果可能的话,分享更多这样的角色......某些人可能需要它.

unicode vim digraphs

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

在保持某些节点的连通性的条件下打破有向图中的循环

我有一个由强连通分量(蓝色)和一组节点(橙色)组成的有向图,它们是它的输入。挑战在于用最少的边缘去除尽可能多的循环。此外,每个橙色节点到每个蓝色节点都必须有一条路径。

我的图

我用蛮力解决了这个问题:

  1. 去除随机边缘
  2. 检查从每个橙色节点到每个蓝色节点的路径。如果一切正常,我会在列表中添加一条边并计算循环数。
  3. 我将边返回到图形并转到步骤 1,直到我遍历所有边
  4. 接下来,从结果列表(长度为 n)我生成组合 C (n, k) 其中 k = {2 ... n}
  5. 我对所有边的组合执行操作 1、2、3

代码的核心如下所示:

    for level in range(2, len(edges)):
        stop = True
        edges2 = combinations(edges,level)
        for i, e in enumerate(edges2):
            g.remove_edges_from(e)

            test = True
            for node in orange_nodes:
                d = nx.algorithms.descendants(g, node)
                test = blue_nodes == d
                if not test:
                    break
            if test:
                stop = False
                cycles_count = len(list(nx.simple_cycles(g)))
                print(f'{i}\t{level}\t{cycles_count}\t{e}')

            g.add_edges_from(e)

        if stop:
            break
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 是否有可能以某种方式优化代码(nx.algorithms.descendants() 和 nx.simple_cycles() 非常慢)?是否可以使用生成树反馈弧集重写代码?
  2. 也许有一种快速搜索算法不是最好的解决方案,而是一个好的解决方案? …

python digraphs networkx

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