用许多块实现的向量并且没有调整大小副本
我想知道是否可以实现一个类似 stl 的向量,其中存储是在块中完成的,而不是分配一个更大的块并从原始块复制,您可以将不同的块保留在不同的位置,并重载运算符[]和迭代器的运算符++,以便向量的用户不知道块不连续。
当超出现有容量时,这可以保存副本。
I'm wondering if it would be possible to implement an stl-like vector where the storage is done in blocks, and rather than allocate a larger block and copy from the original block, you could keep different blocks in different places, and overload the operator[] and the iterator's operator++ so that the user of the vector wasn't aware that the blocks weren't contiguous.
This could save a copy when moving beyond the existing capacity.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您将寻找 std::deque
请参阅 GotW #54 使用向量和双端队列
包含用于演示行为的基准测试
最新的 C++11 标准表示:
常见问题解答 >前奏曲的角落>矢量还是双端队列? (中级) 说:
You would be looking for std::deque
See GotW #54 Using Vector and Deque
Contains benchmarks to demonstrate the behaviours
The latest C++11 standard says:
FAQ > Prelude's Corner > Vector or Deque? (intermediate) Says:
是的,这是可能的。
你知道绳子吗?这就是你所描述的,对于字符串(大字符串==绳子,明白这个笑话吗?)。 Rope 不是标准的一部分,但出于实用目的:它可以在现代编译器上使用。您可以使用它来表示文本编辑器的完整内容。
请看这里:STL 绳索 - 何时何地使用
以及永远记住:(
Yes it's possible.
do you know rope? it's what you describe, for strings (big string == rope, got the joke?). Rope is not part of the standard, but for practical purposes: it's available on modern compilers. You could use it to represent the complete content of a text editor.
Take a look here: STL Rope - when and where to use
And always remember: