已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我的应用程序存在内存问题,包括复制大量字符串、使用与大量哈希表中的键相同的字符串等。我正在为我的字符串寻找一个基类,以使其非常高效。我希望:字符串实习(相同值的多个字符串使用相同的内存),写时复制(我认为这在几乎所有std::string实现中都是免费的),带有绳索的东西将是一个奖励(对于O(1)-ish连接)。我的平台是Linux上的g++(但这不太重要
当有人静态链接一个.lib时,链接器会将lib的全部内容复制到最终的可执行文件中还是只复制目标文件中使用的函数? 最佳答案 整个图书馆?--没有。只是你调用的函数?--没有。还有别的吗?--是的。它肯定不会扔到整个库中。但它也不一定只包括“目标文件中使用的函数”。链接器将创建一个递归构建的列表,列出库中的哪些对象模块满足您的undefinedsymbol。然后,它将包含这些对象模块中的每一个。通常,一个给定的对象模块将包含多个函数,如果其中一些没有被您做调用的函数调用,您将获得一些函数(和数据对象))你不需要的。
当有人静态链接一个.lib时,链接器会将lib的全部内容复制到最终的可执行文件中还是只复制目标文件中使用的函数? 最佳答案 整个图书馆?--没有。只是你调用的函数?--没有。还有别的吗?--是的。它肯定不会扔到整个库中。但它也不一定只包括“目标文件中使用的函数”。链接器将创建一个递归构建的列表,列出库中的哪些对象模块满足您的undefinedsymbol。然后,它将包含这些对象模块中的每一个。通常,一个给定的对象模块将包含多个函数,如果其中一些没有被您做调用的函数调用,您将获得一些函数(和数据对象))你不需要的。
看完this关于我读过的copy-and-swap习语this在(2)下说:class_name&class_name::operator=(constclass_name&)(2)(2)Typicaldeclarationofacopyassignmentoperatorwhencopy-and-swapidiomcannotbeused我们什么时候应该避免使用copy-and-swap习语?什么时候它完全“不能使用”?是否存在copy-and-swap和零规则都不适用的现实案例?我确实找到了question但它过于具体,没有包括任何关于如何识别此类案例的指南。
看完this关于我读过的copy-and-swap习语this在(2)下说:class_name&class_name::operator=(constclass_name&)(2)(2)Typicaldeclarationofacopyassignmentoperatorwhencopy-and-swapidiomcannotbeused我们什么时候应该避免使用copy-and-swap习语?什么时候它完全“不能使用”?是否存在copy-and-swap和零规则都不适用的现实案例?我确实找到了question但它过于具体,没有包括任何关于如何识别此类案例的指南。
类型trait是否应该能够处理std::vector>之类的情况?并检测到它不是可复制的?这是https://ideone.com/gbcRUa的示例(运行g++4.8.1)#include#include#include#includeintmain(){//Thisprints1,implyingthatit'scopyconstructible,whenit'sclearlynotstd::cout>>::value如果这是is_copy_constructible的正确行为,有没有办法检测到复制结构是不正确的?好吧,不仅仅是让它无法编译。 最佳答案
类型trait是否应该能够处理std::vector>之类的情况?并检测到它不是可复制的?这是https://ideone.com/gbcRUa的示例(运行g++4.8.1)#include#include#include#includeintmain(){//Thisprints1,implyingthatit'scopyconstructible,whenit'sclearlynotstd::cout>>::value如果这是is_copy_constructible的正确行为,有没有办法检测到复制结构是不正确的?好吧,不仅仅是让它无法编译。 最佳答案
我猜是这样,但我正在寻找C++11语言律师来确认我的印象。下面的课是真的吗structX{X(){}X(Xconst&)=default;};不会自动启用移动,即获取X(X&&)和operator=(X&&),因为它的复制构造函数是“用户声明的”,即使它看起来等同于structX{};这将获得X(Xconst&)和X(X&&)等,在使用时隐式声明和(平凡)定义。 最佳答案 来自标准:8.4.2Explicitly-defaultedfunctions[dcl.fct.def.default]4-[...]Aspecialmember
我猜是这样,但我正在寻找C++11语言律师来确认我的印象。下面的课是真的吗structX{X(){}X(Xconst&)=default;};不会自动启用移动,即获取X(X&&)和operator=(X&&),因为它的复制构造函数是“用户声明的”,即使它看起来等同于structX{};这将获得X(Xconst&)和X(X&&)等,在使用时隐式声明和(平凡)定义。 最佳答案 来自标准:8.4.2Explicitly-defaultedfunctions[dcl.fct.def.default]4-[...]Aspecialmember
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html2016年6月在芬兰奥卢举行的session上,上述关于“保证复制省略”的提案被投票纳入C++工作文件,然后被投票作为委员会草案发布。希望这会导致明年作为C++17标准发布。该提案阐明了涉及临时对象的各种值类别,以强制在某些用例中不调用复制构造函数。我的问题是“这个新要求可能会破坏以前在这些情况下可能没有进行复制省略的编译器的ABI兼容性,或者以与新要求不兼容的方式实现它?"我正在考虑诸如初始化之类的事情,当对象的创建可以内联时会省略拷贝,但在跨越编译