V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  encounter2017  ›  全部回复第 1 页 / 共 3 页
回复总数  43
1  2  3  
@cnbatch 你说的这两个问题我用 gpt 4o 版本验证了下都答对了:
Q: std::move_only_function 是哪个 C++标准的?

A: std::move_only_function 是 C++23 标准新增的功能。

它是 std::function 的一种变体,专门用于只允许移动而不允许复制的可调用对象。std::move_only_function 提供了更高效的语义,特别适合需要独占所有权的场景(例如异步任务调度、回调管理等)。

这个类型定义在头文件 <functional> 中。


Q: var theName = "hello"u8; 这段 C# 代码的 u8 是什么意思?在哪个 C# 版本可以用?

A:
在 C# 中,u8 是 UTF-8 字符串文字后缀,用于表示一个字符串文字是 UTF-8 格式的字节数组。这一特性是在 C# 11 中引入的。

特性解释
csharp
复制代码
var theName = "hello"u8;
"hello"u8:

表示将字符串 "hello" 编码为 UTF-8 字节数组。
结果类型为 ReadOnlySpan<byte>,它是一个不可修改的字节序列。
行为:

这段代码的作用是将字符串 "hello" 转换为 UTF-8 编码格式的字节序列。
例如,"hello"u8 会被编译为字节数组 { 0x68, 0x65, 0x6C, 0x6C, 0x6F }。
C# 版本
u8 后缀是在 C# 11 中引入的,因此你需要确保以下环境支持:

语言版本:C# 11 或更高。
.NET SDK:需要 .NET 7 或更高版本支持。
应用示例
csharp
复制代码
using System;

class Program
{
static void Main()
{
var theName = "hello"u8;

Console.WriteLine($"Type: {theName.GetType()}");
Console.WriteLine($"Bytes: {string.Join(", ", theName.ToArray())}");
}
}
输出:

vbnet
复制代码
Type: System.ReadOnlySpan`1[System.Byte]
Bytes: 104, 101, 108, 108, 111
适用场景
高效处理 UTF-8 数据:
避免字符串在内存中多次编码转换。
与低级字节处理结合:
更容易与 Span<byte> 或 Memory<byte> 结合使用。
序列化和网络通信:
适合在序列化或处理网络协议时直接操作字节。
注意事项
只读:

u8 后缀生成的是 ReadOnlySpan<byte>,不能直接修改。
如果需要可修改的字节数组,可以使用 .ToArray() 方法转换为 byte[]。
C# 版本要求:

如果代码未在支持 C# 11 的环境中运行,会导致编译错误。确保项目文件启用了 C# 11:
xml
复制代码
<LangVersion>11</LangVersion>
通过 u8 后缀,可以简化对 UTF-8 编码数据的处理,同时利用 ReadOnlySpan<byte> 的性能优势。
39 天前
回复了 jeckyhuang 创建的主题 程序员 AI 真的能代替程序猿吗?
@dfkjgklfdjg 还真能写,就是不知道实现起来有没有可能
https://chatgpt.com/share/67346f71-26d4-8003-8486-87d3813b0cf1
90 天前
回复了 wuhao1 创建的主题 MySQL 老生常谈 关于 子查询的应用
我觉得还是看业务场景,比如说我这里有一个业务场景就是需要查询树状结点下面的所有子节点信息,这种情况下用 recursive cte 查询就很方便,一次就能查完,IO 都在数据库做了,不然的话还得多次查询数据库.

一个简单的示例
```
CREATE TABLE binary_tree (
id INT PRIMARY KEY,
value VARCHAR(255),
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES binary_tree(id)
);

INSERT INTO binary_tree (id, value, parent_id) VALUES
(1, 'Root', NULL),
(2, 'Left Child', 1),
(3, 'Right Child', 1),
(4, 'Left Grandchild', 2),
(5, 'Right Grandchild', 2),
(6, 'Another Left Grandchild', 3),
(7, 'Another Right Grandchild', 3);

WITH RECURSIVE tree_cte AS (
-- Base case: select the root node
SELECT id, value, parent_id, 0 AS level, CAST(id AS text) AS path
FROM binary_tree
WHERE parent_id IS NULL

UNION ALL

-- Recursive case: select child nodes
SELECT c.id, c.value, c.parent_id, p.level + 1, CONCAT(p.path, ',', CAST(c.id AS text))
FROM binary_tree c
JOIN tree_cte p ON c.parent_id = p.id
)
SELECT id, value, parent_id, level, path
FROM tree_cte
ORDER BY path;

1,Root,,0,1
2,Left Child,1,1,"1,2"
4,Left Grandchild,2,2,"1,2,4"
5,Right Grandchild,2,2,"1,2,5"
3,Right Child,1,1,"1,3"
6,Another Left Grandchild,3,2,"1,3,6"
7,Another Right Grandchild,3,2,"1,3,7"

```
133 天前
回复了 awesomePower 创建的主题 数据库 mysql 如何针对位运算条件字段进行索引
pg 支持部分索引,比如:

CREATE INDEX access_log_client_ip_ix ON access_log (client_ip)
WHERE NOT (client_ip > inet '192.168.100.0' AND
client_ip < inet '192.168.100.255');
2022-12-08 11:01:07 +08:00
回复了 xikazi 创建的主题 问与答 [求助] : FFmpeg 怎么读。
/ˈef.fem.dʒiː/
2022-08-25 10:26:09 +08:00
回复了 samin 创建的主题 程序员 记一次 PostgreSQL 事故处理
用 timestamp with time zone 是不是就没这么多事情了
2022-07-28 16:27:47 +08:00
回复了 KIRAYOMATO 创建的主题 问与答 非科班转码需要学哪些计算机专业的课程?
@rekulas 没放反。因为老老实实写问题描述记录日志,大多数人都不会认真看。挑起争议话题立刻就有人来给你纠正标准做法了
错误的提问方式❌:我想要实现一个这样的场景,这是我的报错日志,我做了如下尝试,有什么办法可以解决这个问题?

正确的提问方式✅: A 就是个垃圾,你看我用 B 也能做到一样好(附上错误的实践方式)
2022-03-02 11:16:46 +08:00
回复了 CookCoder 创建的主题 程序员 斐波那契数列 n = 9292 的结果是什么?
n < 2 的时候直接返回,不太对吧。。。
前几项是 1, 1, 2, 3, ...
2022-03-02 11:07:26 +08:00
回复了 CookCoder 创建的主题 程序员 斐波那契数列 n = 9292 的结果是什么?
2022-02-15 11:33:41 +08:00
回复了 lesismal 创建的主题 程序员 伸手党真是烦
@Herong 2048  是什么鬼 2077 ?
2022-01-17 11:26:39 +08:00
回复了 duyaofei 创建的主题 分享发现 最近看道德经,发现写的是三进制计算机啊,大佬们解惑
《震惊,苏联三进制计算机Сетунь灵感来自道德经》
2022-01-12 12:12:58 +08:00
回复了 7911364440 创建的主题 Java 有没有 DDD 开源实战项目推荐?
2021-12-10 10:59:41 +08:00
回复了 eviladan0s 创建的主题 Java 颤抖吧 Javaer, log4j 史诗级漏洞
@conhost https://mvnrepository.com/artifact/ch.qos.logback/logback-classic/1.2.7
不是吧,测试有依赖的 log4j1 ,编译没有依赖
人家问的是计算框架,楼下说的是容器平台,都不是一回事
apache beam 看下符合不?有 go 的 sdk
2021-08-30 18:38:43 +08:00
回复了 icemanpro 创建的主题 C++ 如何将 list 的值传给函数的可变参数?
2021-08-26 18:56:13 +08:00
回复了 fdgdbr 创建的主题 程序员 一个奇怪的 oracle 分页的问题
2021-04-22 18:38:35 +08:00
回复了 ZoeYn 创建的主题 Python 有没有比较优雅的合并两个列表的方法?
python 的话

from itertools import product
a = [1,2]
b = ['a','b','c']

list(product(a,b))
# [(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c')]

scala 的话

scala> for {
| a <- List(1, 2)
| b <- List('a', 'b', 'c')
| } yield (a,b)
val res1: List[(Int, Char)] = List((1,a), (1,b), (1,c), (2,a), (2,b), (2,c))
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3689 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 48ms · UTC 04:20 · PVG 12:20 · LAX 20:20 · JFK 23:20
Developed with CodeLauncher
♥ Do have faith in what you're doing.