草庐IT

smart_listing

全部标签

c++ - initializer_list 不可变的性质导致过度复制

为什么访问std::initializer_list不允许我们改变它的内容?在将std::initializer_list用于其主要目的(初始化容器)时,这是一个很大的缺点,因为它的使用会导致过多的复制构造/复制赋值,而不是move构造/move分配。#include#include#include#includestructA{A()=default;A(Aconst&){std::cout{A{},A{},A{}};returnEXIT_SUCCESS;}Output(如预期的那样):A::A(constA&)A::A(constA&)A::A(constA&)为什么它的设计如此受

c++ - 列表初始化和 initializer_list 构造函数的失败重载解析

以下无法通过clang35-std=c++11编译:#include#include#includeclassA{public:A(int,bool){std::cout){std::cout有错误init.cpp:15:14:error:type'double'cannotbenarrowedto'int'ininitializerlist[-Wc++11-narrowing]Aa1={1,1.0};^~~init.cpp:15:14:note:insertanexplicitcasttosilencethisissueAa1={1,1.0};^~~static_cast()OTOH

c++ - std::list<>::splice 使迭代器无效。理由?

我想知道制作std::list::splice背后的基本原理是什么使引用被拼接到新容器中的子序列的迭代器无效。这对我来说有点不合逻辑,尤其是考虑到标准std::container::swap规范。根据语言标准std::container::swap不会使任何迭代器失效。这是一个完全合理的实用规范。但是,我会说std::list::splice也会从保留迭代器的行为中受益匪浅。我知道可能有一些基于迭代器可达性等概念的纯学术考虑。但同时splice是std::list-特定操作,这意味着为其提供定制规范可能不会对一般的STL设计造成严重的概念性损害。那是什么?它是否会使std::list的

c++ - std::list<std::future> 析构函数不阻塞

我有一个多线程应用程序,有一个循环等待用户输入作为主线程。在正确的输入上,它应该停止循环并等待所有其他线程正确结束。为此,我创建了一个std::list,其中放置了为创建线程而创建的std::future对象std::list>threads;threads.emplace_front(std::async(std::launch::async,...));我的印象是,让list超出范围应该阻塞,直到所有线程返回它们的main函数,因为list的析构函数将destrurct所有std::future元素和thedestructorofthose将等待线程完成。编辑:因为它是相关的,所以

c++ - 检查元素是否在 std::initializer_list 中

我希望能够用C++编写类似于以下Python代码的内容:ifxin[1,2,3,5]...测试一个元素是否包含在一组硬编码值中,就地定义。像这样:if(in(x,{1,2,3,5}))...下面是in函数的可能实现:templateboolin(constT&x,std::initializer_listc){returnstd::find(c.begin(),c.end(),x)!=c.end();}我的问题是:我真的必须自己编写这个函数吗?那里有任何默认实现吗?也许在boost?我检查了boost::contains,但它只适用于字符串。 最佳答案

c++ - 使用 initializer_list 初始化数组?

这个问题在这里已经有了答案:HowdoIinitializeamemberarraywithaninitializer_list?(8个答案)关闭7年前。有可能吗?#include#includestructA{A(std::initializer_listl):m_a(l){}std::arraym_a;};intmain(){Aa{1,2};}但这会导致这个错误:t.cpp:Inconstructor‘A::A(std::initializer_list)’:t.cpp:7:19:error:nomatchingfunctionforcallto‘std::array::array

windows - 在 Windows : SxS, list 和所有爵士乐上构建和部署 dll

从VS2005开始,我发现不可能简单地针对MS运行时构建一个dll并将它们一起部署(http://www.ddj.com/windows/184406482)。我对manifest、SxS和co深感困惑:MSDN文档真的很差,循环引用;特别是因为我更喜欢Unix,所以我发现所有这些都没有提供信息。我的核心问题是将dll链接到msvc9或msvc8:由于这些运行时不可再分发,链接和部署此类dll的步骤是什么?特别是,list是如何生成的(我不想要mt.exe,我想要跨编译器可移植的东西),它们是如何嵌入和使用的?并排组装是什么意思?基本上,我在哪里可以找到任何类型的规范而不是MS行话?谢

list - 从另一个创建列表

假设我在列表中有一些值。我想返回另一个包含新元素的列表funnewList():List{valvalues=listOf(1,2,3,4,5,6);return7::values;//somethinglikethat} 最佳答案 Kotlin列表有theplusoperator重载inkotlin-stdlib,因此您可以将项目添加到列表中:valvalues=listOf(1,2,3,4,5,6)returnvalues+7还有一个重载会添加另一个列表:valvalues=listOf(1,2,3,4,5,6)returnli

list - 从另一个创建列表

假设我在列表中有一些值。我想返回另一个包含新元素的列表funnewList():List{valvalues=listOf(1,2,3,4,5,6);return7::values;//somethinglikethat} 最佳答案 Kotlin列表有theplusoperator重载inkotlin-stdlib,因此您可以将项目添加到列表中:valvalues=listOf(1,2,3,4,5,6)returnvalues+7还有一个重载会添加另一个列表:valvalues=listOf(1,2,3,4,5,6)returnli

Python Windows 注册表 : Display List of Profiles

我是Windows注册表的新手,我目前正在尝试使用Python从我的Windows注册表中获取配置文件名称列表,但我不确定我做错了什么。我的代码如下:fromwinregimport*defget_profiles():regKey=OpenKey(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList')recent=QueryValueEx(regKey,'DisplayName')[0]recent_list=[]forsubkeyinrecent:recent_list.appen