gpt4 book ai didi

c++ - 在 C++ 中有没有办法从不同的内存位置打印 char*?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:50 25 4
gpt4 key购买 nike

我不确定这个问题是否有意义,所以我将尝试展示一个例子:

想象一下,我在内存位置 &s 处有一个字符串(未以空值终止),在内存位置 z 处有另一个字符串(以空值终止)。

char s[4]; s[0] = 'a'; s[1] = 'a'; s[2] = 'a'; s[3] = 'a';
char *z = malloc(sizeof(char) * 4);
z[0] = 'a'; z[1] = 'a'; z[2] = 'a'; z[3] = '\0';
char *y = malloc(sizeof(char) * 4);
y[0] = 'a'; y[1] = 'a'; y[2] = 'a'; y[3] = '\0';

有没有办法表示字符串 u,即 sz 与另一个字符串 的串联v,这是 sy 的串联,而无需重复 s

我知道它在阅读时不会很快,但它肯定会节省更多内存,尤其是在预期的重复次数方面。由于 s 的值可能会分别从 zy 更改,并且更改应该出现在 zv,如果可能的话,不克隆 s 肯定会更有效率。

最佳答案

您想要的(或者我认为您想要的)结构的标准名称是 rope - 它就像具有统一界面的复合字符串序列。

This other question关于绳索有一些关于它们的讨论,以及 SGI 扩展的链接。

如果您选择现有的实现,请检查子字符串的可变性是否按照您想要的方式工作 - 有些可能会改为实现写时复制。

关于c++ - 在 C++ 中有没有办法从不同的内存位置打印 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25608643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com