小编And*_* DM的帖子

包括)"在原始字符串文字中没有终止所述文字

这两个字符)"在下面的示例中终止原始字符串文字.
序列)"可能会在某些时候出现在我的文本中,即使在其中找到此序列,我也希望字符串继续.

R"(  
    Some Text)"  
)";       // ^^
Run Code Online (Sandbox Code Playgroud)

如何)"在字符串文字中包含序列而不终止它?

c++ string-literals c++11

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

错误:'sort'不是'std'的成员

我只是想问一下这个错误是什么意思以及如何解决这个问题谢谢!

错误:'sort'不是'std'的成员

vector<int> result;
        for (auto & i : numbers)
            result.push_back(std::stoi(i));
        std::sort(result.begin(), result.end());
Run Code Online (Sandbox Code Playgroud)

c++

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

在Code :: Blocks中启用`-std = c ++ 14`标志

我已经安装了Code :: Blocks for Windows,并希望编译C++ 14代码,如通用lambdas,但我从codeblocks.org安装的Code :: Blocks的二进制版本不支持该标志
-std=c++14.

如何更新编译器并启用-std=c++14Code :: Blocks的标志?

c++ codeblocks generic-lambda c++14

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

为什么在函数体内定义的内置类型的未初始化对象具有未定义的值?

问:
为什么定义内置型的未初始化的对象的函数体已经明确的值,而内置类型定义的对象之外的任何功能被初始化为0''

举个例子:

#include <iostream>
using std::cout; using std::endl;

int ia[10];                   /* ia has global scope */

int main() 
{
    int ia2[10];              /* ia2 has block scope */

    for (const auto& i : ia)
        cout << i << " ";     /* Result: 0 0 0 0 0 0 0 0 0 0 */

    cout << endl;
    for (const auto& i : ia2)
        cout << i << " ";     /* Result: 1972896424 2686716 …
Run Code Online (Sandbox Code Playgroud)

c++ scope initialization built-in-types c++11

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

为什么直接列表初始化与auto被认为是坏的或不是首选的?

我养成了使用直接列表初始化编写代码的习惯,因为它更有效,并且防止隐式缩小非常有用:

int i {0};
string s {""};
char c {'a'};
bool b {false};

auto num {100}; // But this??
Run Code Online (Sandbox Code Playgroud)

但是当谈到自动说明符时,我听说它被认为是坏的或者不喜欢这样写它,为什么呢?

c++ initialization auto c++11 type-deduction

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

为什么我可以在lambda中使用ostream cout虽然它没有被捕获?

这个lambda失败了因为我没有捕获变量:

int main()
{
    int val = 5;
    auto lambda = []{ return val; };  // error: val wasn't captured.
    lambda();
}
Run Code Online (Sandbox Code Playgroud)

但是为什么ostream cout工作虽然它没有被捕获?

int main()
{
    auto lambda = []{ cout << endl; };  // works
}
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

8
推荐指数
1
解决办法
1026
查看次数

内部与外部包含防护

我听说您应该更喜欢编写内部包含守卫而不是外部包含守卫
我在互联网上搜索过,但没有找到答案。

这是 Herb & Andrei 所著的 C++ Coding Standards 一书的片段,其中显示了“外部包含保护”:

避免使用旧书中提倡的过时的外部包含保护:

#ifndef FOO_HJNCLUDED_ //NOT recommended
#include "foo.h"
#define FOO_HJNCLUDED_
#endif
Run Code Online (Sandbox Code Playgroud)

现在,这导致了以下问题:

问: 什么是内部包含保护,什么是外部包含保护?两者之间有什么区别,为什么首选内部包含守卫?
我希望答案也提供了一个例子。

编辑:我最终回答了我自己的问题。

c++ include-guards header-files

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

什么是C++中的"集合"?它们什么时候有用?

我很难概念化c ++集,实际上是一般的.

这些是什么?它们有用吗?

c++ computer-science set

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

lambda表达式中没有匹配的成员函数错误?

这对我来说是一个很奇怪的错误.检查以下代码:

void test(void){
    vector<string> v;
    v.push_back("hello");
    auto fn=[=](){
        v.push_back("world");
    };
}
Run Code Online (Sandbox Code Playgroud)

第一个push_back方法传递了编译但第二个失败了,产生了错误:

错误:没有匹配的成员函数来调用'push_back'

编译器说明是:

**注意:(687,36)候选函数不可行:'this'参数的类型为'const vector'(又名'const vector,allocator >>')

但该方法没有标记const**.
好吧,我没有使用任何const参数,我无法弄清楚编译器试图告诉我什么.有人能帮助我吗?

c++ lambda c++11

5
推荐指数
1
解决办法
554
查看次数

NRVO 什么时候开始?需要满足哪些要求?

我有以下代码。

#include <iostream>    
struct Box {
        Box() { std::cout << "constructed at " << this << '\n'; }
        Box(Box const&) { puts("copy"); }
        Box(Box &&) = delete;
        ~Box() { std::cout << "destructed at " << this << '\n'; }
};
 
auto f() {
    Box v;
    return v; // is it eligible for NVRO?
}

int main() {
    auto v = f(); 
}
Run Code Online (Sandbox Code Playgroud)

上面的代码产生错误。 call to deleted constructor/function in both gcc and clang

但是,如果我更改代码以返回纯右值,则代码有效。

auto f() {
      Box v;
      return Box(); …
Run Code Online (Sandbox Code Playgroud)

c++ copy-elision c++14 c++17 c++20

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