这段代码中的“”是啥,它的基本作用是啥?

Posted

技术标签:

【中文标题】这段代码中的“”是啥,它的基本作用是啥?【英文标题】:What is ""s in this code, and what it basically do?这段代码中的“”是什么,它的基本作用是什么? 【发布时间】:2020-06-08 06:16:52 【问题描述】:

想知道s = ""s在下面的代码中做了什么以及它是如何使用的!

generate(begin(v), end(v), [s = ""s, c = '`']() mutable  ++c; s += c; return s; );
#include <bits/stdc++.h>

using namespace std;


void use_generate_abc() 
  vector<string> v(5);
  generate(begin(v), end(v), [s = ""s, c = '`']() mutable  ++c; s += c; return s; );
  for(auto x: v)cout << x << " ";


int main()
   std::ios_base::sync_with_stdio(false);
   std::cin.tie(NULL);
   use_generate_abc();
   return 0;

【问题讨论】:

在不相关的注释上,请don't include &lt;bits/stdc++.h&gt; 更不用说using namespace std的用法 而且 std::ios_base::sync_with_stdio(false); 并不是真正需要的。这只是出于某种莫名其妙的原因恰好在在线“竞争”网站上流行的东西。太多人用来学习如何编程的网站。他们将学习的只是为此类站点编程,仅此而已。如果您真的想学习 C++ 和编程,请获取 a few good books 并参加几门课程。 猜他来自 leetcode/hackerrank :) @Chiranjeev 只要你记得那些是坏习惯(包括using namespace std;)。不幸的是,习惯(好的和坏的)往往会坚持下去。 【参考方案1】:

这是一个user-defined literal。 s suffix 将其转换为 std::string

例如,假设你有

auto s = ""s;

那么就相当于

auto s = std::string();

或者只是

std::string s;

换句话说,它创建了一个空的std::string


结合lambda capture,它将变量s定义为一个空的std::string对象,并捕获它以在lambda中使用。

【讨论】:

@ThomasSablik 来自user-defined literal reference:“程序引入的所有ud-suffixes 必须以下划线字符_ 开头。标准库ud-suffixes 不以下划线开头。"(强调我的)

以上是关于这段代码中的“”是啥,它的基本作用是啥?的主要内容,如果未能解决你的问题,请参考以下文章

& 在这段代码中的作用是啥?

星号 (*) 在 CSS 选择器中的作用是啥?

这段代码的作用是啥,使用的每个符号是啥意思?使用的语言是 C,我只是编码的初学者

能否解释一下下面这段代码是啥作用,例如#region的作用跟MyBase.new()的作用

这段重复减去值的代码的复杂性是啥?

这段代码中的“<+”是啥意思? [复制]