这段代码中的“”是啥,它的基本作用是啥?
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<bits/stdc++.h>
。
更不用说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 不以下划线开头。"(强调我的)以上是关于这段代码中的“”是啥,它的基本作用是啥?的主要内容,如果未能解决你的问题,请参考以下文章
这段代码的作用是啥,使用的每个符号是啥意思?使用的语言是 C,我只是编码的初学者