小编ein*_*ica的帖子

如何禁止单个SQL语句的列标题输出?

我正在批量执行一些SQL语句(使用mysql命令行二进制文件).我希望我的几个SELECT语句中的一个不打印列标题,只打印选定的记录.这可能吗?

mysql suppression columnheader output

99
推荐指数
2
解决办法
13万
查看次数

GPU的顶级命令使用CUDA

我正在尝试监控使用cuda和MPI的进程,有什么方法可以做到这一点,比如命令"top"但是监视GPU呢?

cuda resource-monitor

96
推荐指数
12
解决办法
11万
查看次数

Eclipse CDT for C标准库头文件中存在"未解决的包含"错误

我为eclipse设置了CDT并编写了一个简单的hello world C程序:

#include <stdio.h>

int main(void){
    puts("Hello, world.");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序正确构建和运行,但是eclipse在包含语句的一侧不断显示这个黄色问号,"Unresolved inclusion: <stdio.h>"当我把鼠标悬停在它上面时.

它不会影响程序的运行,但我觉得它很烦人.

有谁知道如何删除它?

c eclipse eclipse-cdt standard-library

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

你如何迭代std :: tuple的元素?

如何迭代元组(使用C++ 11)?我尝试了以下方法:

for(int i=0; i<std::tuple_size<T...>::value; ++i) 
  std::get<i>(my_tuple).do_sth();
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

错误1:抱歉,未实现:无法将"Listener ..."扩展为固定长度的参数列表.
错误2:我不能出现在常量表达式中.

那么,我如何正确迭代元组的元素?

c++ iteration template-meta-programming c++11 stdtuple

92
推荐指数
12
解决办法
6万
查看次数

gsl库中span和array_view的区别是什么?

在最近的几次会议演示中,我听说Bjarne Stroustrup和其他人提到了C++的新编码指南以及支持它们的一些类型.

具体来说,我记得一个例子,span<T>而不是(T* p, int n)作为一个函数的参数(在约32:00进入谈话时); 但我也记得使用的建议array_view<T>.它们是两个替代方案但是相同的概念吗?或者我是否混淆了事情,他们实际上并没有那么相关?

我似乎无法找到任何关于它们应该是什么的权威定义.

c++ array-view cpp-core-guidelines guideline-support-library

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

字符文字中转义数字的Java语义是什么,例如'\ 15'?

请解释在执行以下代码段时会发生什么:

int a='\15';
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

这打印出13;

int a='\25';
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

这打印出21;

int a='\100';
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

这打印出64.

java syntax character literals octal

84
推荐指数
3
解决办法
3383
查看次数

为什么我不能在C++ 11中创建lambdas(相同类型)的向量?

我试图创建一个lambda矢量,但失败了:

auto ignore = [&]() { return 10; };  //1
std::vector<decltype(ignore)> v;     //2
v.push_back([&]() { return 100; });  //3
Run Code Online (Sandbox Code Playgroud)

直到第2行,它编译得很好.但第3行给出了编译错误:

错误:没有匹配函数来调用'std :: vector <main():: <lambda()>> :: push_back(main():: <lambda()>)'

我不想要一个函数指针向量或函数对象向量.但是,封装真实 lambda表达式的函数对象向量对我有用.这可能吗?

c++ lambda vector c++11

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

为什么T *可以在寄存器中传递,但unique_ptr &lt;T&gt;无法传递?

我正在观看Chandler Carruth在CppCon 2019中的演讲:

没有零成本抽象

在该示例中,他举例说明了您对使用std::unique_ptr<int>over和会产生多少开销而感到惊讶int*。该段大约在时间点17:25开始。

您可以看一下他的示例代码对(godbolt.org)的编译结果 -可以看到,确实,编译器似乎不愿意传递unique_ptr值-实际上,底线是只是一个地址-在寄存器内,仅在直接内存中。

Carruth先生在27:00左右提出的观点之一是,C ++ ABI要求按值传递参数(某些但不是全部;也许-非基本类型?而不是在寄存器中。

我的问题:

  1. 这实际上是某些平台上的ABI要求吗?(哪个?)或者在某些情况下可能只是一些悲观?
  2. 为什么ABI这样?也就是说,如果结构/类的字段适合寄存器,甚至单个寄存器,为什么我们不能在寄存器中传递它呢?
  3. 近年来,C ++标准委员会是否曾经讨论过这一点?

PS-为了不给这个问题留下代码:

普通指针:

void bar(int* ptr) noexcept;
void baz(int* ptr) noexcept;

void foo(int* ptr) noexcept {
    if (*ptr > 42) {
        bar(ptr); 
        *ptr = 42; 
    }
    baz(ptr);
}
Run Code Online (Sandbox Code Playgroud)

唯一指针:

using std::unique_ptr;
void bar(int* ptr) noexcept;
void baz(unique_ptr<int> ptr) noexcept;

void foo(unique_ptr<int> ptr) noexcept {
    if (*ptr > 42) { 
        bar(ptr.get());
        *ptr = 42; 
    }
    baz(std::move(ptr));
}
Run Code Online (Sandbox Code Playgroud)

c++ assembly abi calling-convention unique-ptr

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

使用unsigned而不是signed int更可能导致错误吗?为什么?

Google C++样式指南中,有关"无符号整数"的主题,建议使用

由于历史意外,C++标准也使用无符号整数来表示容器的大小 - 标准组织的许多成员认为这是一个错误,但在这一点上实际上无法修复.无符号算术不对一个简单整数的行为进行建模,而是通过标准来定义模块化算法(包含溢出/下溢),这意味着编译器无法诊断出一大类错误.

模运算有什么问题?这不是unsigned int的预期行为吗?

指南引用了哪些错误(一个重要的类)?溢出的错误?

不要仅使用无符号类型断言变量是非负的.

我可以想到使用signed int而不是unsigned int的一个原因是,如果它确实溢出(为负),则更容易检测.

c c++ google-style-guide

77
推荐指数
5
解决办法
5415
查看次数

"除了最后一个之外的每一个"(或"每个连续元素对之间")的成语

每个人都会遇到这个问题:

for(const auto& item : items) {
    cout << item << separator;
}
Run Code Online (Sandbox Code Playgroud)

...而且你得到了一个你不想要的额外分隔符.有时候它不是打印,而是执行一些其他动作,但是相同类型的连续动作需要一些分隔符动作 - 但最后一个动作不需要.

现在,如果你使用old-school for循环和数组,你会这样做

for(int i = 0; i < num_items; i++)
    cout << items[i];
    if (i < num_items - 1) { cout << separator; }
}
Run Code Online (Sandbox Code Playgroud)

(或者你可以特别说明循环中的最后一项.)如果你有任何承认非破坏性迭代器的东西,即使你不知道它的大小,你可以这样做:

for(auto it = items.cbegin(); it != items.cend(); it++) {
    cout << *it;
    if (std::next(it) != items.cend()) { cout << separator; }
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢最后两个的美学,并喜欢一系列的循环.我可以获得与后两个相同的效果,但使用更多漂亮的C++ 11ish结构吗?


为了进一步扩展这个问题(除了这个之外),我会说我也不想明确地说明第一个或最后一个元素的特殊情况.这是一个"实施细节",我不想被打扰.所以,在虚构的未来C++中,可能是这样的:

for(const auto& item : items) {
    cout << item;
} and_between …
Run Code Online (Sandbox Code Playgroud)

c++ idioms separator c++11

76
推荐指数
9
解决办法
6697
查看次数