Questions tagged «tuples»

在编程中,元组是简单的*产品类型*,表示类型的有序集合。

4
C ++ 17:打开元组时仅保留一些成员
假设您需要调用以下方法: std::tuple<int, int, int> foo(); 在C ++ 17中,您可以调用该函数并在一行中解压缩该元组: auto [a, b, c] = foo(); 现在,我怎么能继续只存储b和c并丢弃a? 目前,我只知道两个选择: 1-自动解压缩时可以使用虚拟变量 但是,哑变量将不被使用,并且会发出警告,因此,如果我想使该警告保持沉默,该代码将非常令人讨厌: #pragma warning(push) #pragma warning(disable:4101) // ReSharper disable once CppDeclaratorNeverUsed auto [_, b, c] = foo(); #pragma warning(pop) 2-我可以存储整个元组,并用于std::get检索对我唯一需要的变量的引用。该代码不太令人讨厌,但语法也不太简单。 此外,对于我们要保留在元组中的每个新值,此代码的大小增加一行。 auto tuple = foo(); int b = std::get<1>(tuple); int c = std::get<2>(tuple); 是否存在另一种更直接的方法来仅将元组中的某些参数解包?
69 c++  tuples  c++17 


4
与列表切片相反,元组切片不返回新对象
在Python(2和3)中。每当我们使用列表切片时,它都会返回一个新对象,例如: l1 = [1,2,3,4] print(id(l1)) l2 = l1[:] print(id(l2)) 输出量 >>> 140344378384464 >>> 140344378387272 如果用元组重复相同的事情,则返回相同的对象,例如: t1 = (1,2,3,4) t2 = t1[:] print(id(t1)) print(id(t2)) 输出量 >>> 140344379214896 >>> 140344379214896 如果有人能弄清为什么会发生,那将是很棒的,在我的整个Python经验中,我一直以为空切片会返回一个新对象为印象。 我的理解是,它返回的对象与元组是不可变的相同,因此没有必要为其创建新副本。但是同样,文档中也没有提到它。
12 python  list  tuples  slice  cpython 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.