小编jus*_*der的帖子

在C99中获取rvalue的地址

以下代码编译和工作:

#include <stdio.h>

void print(void* x)
{
    printf("%d", *(int*)x);
}

int main()
{
    print(&((struct { int x, y; }){ .x = 1, .y = 2 })); //outputs 1
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么编译器允许我获取rvalue的地址?这是定义的行为吗?

http://ideone.com/iMwNVr

c gcc c99 undefined-behavior

9
推荐指数
1
解决办法
319
查看次数

这是g ++ c ++ 14支持中的错误吗?

似乎使用auto参数g ++只是首先auto遇到它.这是一个错误吗?

auto f(std::vector<auto> a)
{
    a.push_back('0');
    return std::string("");
}
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/T69ytm

c++ g++ c++14

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

使用unicode的std :: string的奇怪行为

我有以下代码:

#include <iostream>

std::string eps("?");

int main()
{
    std::cout << eps << '\n';
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

不知何故,它在Ubuntu上用g ++和clang编译,甚至打印出正确的字符?.我也有几乎同样的一段代码,它高兴地读取?cinstd::string.顺便说一下,eps.size()是2.

我的问题是 - 它是如何工作的?我们如何将unicode字符插入std::string?我的猜测是操作系统使用unicode处理所有这些工作,但我不确定.

编辑

和输出一样,我知道终端负责向我展示正确的角色(在这种情况下为ε).

但是输入:cin读取符号' '或任何其他空格字符(并且我逐字节理解).所以,如果我采取?,哪个第二个字节是32 ' ',它将只读取第一个字节,然后停止.但它读到了?.怎么样?

c++ unicode ubuntu g++ clang

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

变异与继承

假设我正在为某种编程语言编写编译器。通常将抽象语法树(AST)用作内部表示。我可以看到两种可能的设计方法:

  1. 使用 boost::variant
  2. 使用继承

由于节点的层次结构是固定的,boost::variant因此就足够了。

我的问题是,从可维护性和运行时效率的角度来看,每种方法的优缺点是什么?

c++ compiler-construction boost abstract-syntax-tree

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

通过分组数据与大熊猫堆积条形图

让我们假设我有pandas数据框,它有很多功能,我对两个感兴趣.我会打电话给他们feature1,并feature2.

feature1可以有三个可能的值. feature2可以有两个可能的值.

我需要按条形图分组feature1并按行数计算每个值的值feature2.(这样会有三个堆叠,每个堆叠有两个柱子).

怎么做到这一点?

目前我有

import pandas as pd
df = pd.read_csv('data.csv')
df['feature1'][df['feature2'] == 0].value_counts().plot(kind='bar',label='0')
df['feature1'][df['feature2'] == 1].value_counts().plot(kind='bar',label='1')
Run Code Online (Sandbox Code Playgroud)

但这不是我真正想要的,因为它不会叠加它们.

python plot pandas

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