这在C++ "It does not own the underlying data, and so is cheap to copy or assign"中意味着什么
What does it mean in C++ "It does not own the underlying data, and so is cheap to copy or assign"
我正在阅读有关mutable_buffer的信息,它说
mutable_buffer类提供缓冲区的安全表示形式 可以修改。它不拥有基础数据,因此 复制或分配成本低廉。
通过复制,我认为这意味着使用memcpy复制数据。分配是什么意思?
另外,如果我有一个指向数据的指针,我不能简单地mutable_buffer指向这些数据而不是我的吗?当然,如果两者的大小一致。
如果您查看更多上下文,您会发现 boost 缓冲区是从现有数据聚合(如数组、std::array
s、boost::array
s 或std::vector
s(构造的。这些是数据的所有者,这意味着他们负责分配和删除。
相比之下,mutable_buffer
类只指向上述容器之一提供的数据,在创建时不获取它,在销毁时不删除它;这就是"它不拥有数据"的意思。
因为它只包含一个指针和一个整数大小,并且不能不关心它指向的数据,所以创建、复制、分配和销毁的成本很低。(但显然必须注意所指向的数据仍然有效 - 这就是例如std::vector
的区别,无论您何时何地复制,创建和销毁它,它都会自动处理它。缺点是复制向量会复制所有数据。
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- C++ Singleton - Prevent ::instance() to variable
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- std::filesystem::copy throws filesystem_error
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- Python str to C++ to Python str
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 这在C++ "It does not own the underlying data, and so is cheap to copy or assign"中意味着什么
- Copy std::vector to boost::interprocess::vector
- VS 远程建筑:"Makefile.Targets error: Cannot copy file remotely to directory"
- 编译器减少 std::copy to memcpy (memmove) 的条件是什么?
- QT copy to QTemporaryFile
- CMake Copy File to Current Working Directory Linux
- directory_make a copy to "rewind"?