std-pair相关内容
在考虑复制之前,请了解我的问题的基础。 为什么C++std::map接受std::pair作为键类型,而std::unordered_map不接受? 第一个案例编译完美: #include #include using namespace std; typedef pair int_pair; int main() {
..
std::pair 和只有两个成员的 std::tuple 之间有区别吗?(除了明显的 std::pair 需要两个且只有两个成员并且 tuple 可能有更多或更少......) 解决方案 有一些区别: std::tuple 标准并不要求永远是 standard-layout.如果 T 和 Y 都是标准布局,则每个 std::pair 都是标准布局. 获取 pair 的内容比获
..
Java 中没有 Pair 有充分的理由吗?这个 C++ 构造的等价物是什么?我宁愿避免重新实现我自己的. 1.6 似乎提供了类似的东西(AbstractMap.SimpleEntry),但这看起来很复杂. 解决方案 在comp.lang.java.help 上的一个线程,Hunter Gratzner 给出了一些反对 Java 中存在 Pair 构造的论据.主要
..
我想用 k 对象初始化一个 std::vector(属于 std::pair),其值对如下所示. 这是我的尝试: //int kstd::vector >v(k, (std::numeric_limits::max(), -1)); 错误: usr/include/c++/4.6/bits/stl_vector.h: 在成员函
..
如何创建一组对,其中的元素(对)使用自定义 bool 函数进行排序?我写 set ,compare>我的集合; 并得到错误:参数 2 的类型/值不匹配,需要一个类型,得到“比较" 我将“比较"定义为 bool compare(pair g1, pair g2){返回(g1.second-g1.first > g2.se
..
假设我有以下代码: std::vector 现在我只需要在其中搜索一个 int 元素,所以: vectorIt = std::find_if(myVec.begin(),myVect.end(),make_pair(.....));^^^^^^^^^^^^^^^^^ 我该怎么做? 解决方案 编写一个接受 std::pair 的一元谓词,如果 first 元素返回 true等于给定值
..
我有一个 std::list>,我知道是按照std::string element排序的. 由于我想做很多基于 std::string 元素的 std::find_if,我相信 std::map 与 lower_bound 和 upper_bound 会更合适.
..
std::make_pair 的目的是什么? 为什么不直接做 std::pair(0, 'a')? 这两种方法有什么区别吗? 解决方案 区别在于 std::pair 需要指定两个元素的类型,而 std::make_pair 将创建一个带有传递给它的元素类型的对,而无需您告诉它.无论如何,这就是我可以从各种文档中收集到的信息. 从 http://www.cplusplus.
..
我已经确定了四种将元素插入std::map的不同方式: std::map功能;函数[0] = 42;function.insert(std::map::value_type(0, 42));function.insert(std::pair(0, 42));function.insert(std::make_pair(0, 42)); 哪些是首选/惯用的方式?(还有我没有想到的其他方法吗?)
..
我刚刚发现在某一时刻,C++11 草案对 std::pair 有 std::begin/std::end 重载 允许将一对迭代器视为适合在基于范围的 for 循环中使用的范围(N3126,第 20.3.5.5 节),但此后已被删除. 有谁知道为什么它被删除了? 我发现删除非常不幸,因为似乎没有其他方法可以将一对迭代器视为一个范围.确实: 在基于范围的 for 循环中开始/结束的查
..
std::pair 有什么用,我为什么要使用它,boost::compressed_pair 有什么好处? 解决方案 std::pair 是一种将两个值组合为一个对象的数据类型.std::map 将其用作密钥,值对. 在您学习时pair,您可以查看 tuple.它就像 pair ,但用于对任意数量的值进行分组.tuple 是 TR1 的一部分,许多编译器已经将它包含在他们的标准库
..
可能的重复: 有什么区别在使用具有两个字段和一对的结构之间? 亲爱的, 我有一个关于pairs和struct的小问题.使用 std::pair 而不是具有两个单元格的结构有什么好处吗?我已经使用了一段时间,但主要问题是可读性:如果你想表示例如一个双重(int "label", double "value"),你可以使用 a : typedef std::pair我的Elem; 或
..
使用具有两个字段和一对字段的结构在内存分配和效率方面有什么区别? 解决方案 std::pair 提供预先编写的构造函数和比较运算符.这也允许它们存储在 std::map 之类的容器中,而无需编写,例如,复制构造函数或通过 operator
..
我感兴趣:C# 中的 std::pair 在 C++ 中的模拟是什么?我找到了 System.Web.UI.Pair 类,但我更喜欢基于模板的东西. 谢谢! 解决方案 元组 自 .NET4.0 起可用 并支持泛型: Tuplet = new Tuple("Hello", 4); 在以前的版本中,您可以使用 System.Collections.Generic.KeyValuePa
..
如果我有一个 vector> 数据类型,如果第一个元素相等,按对的第一个元素排序,然后按第二个元素排序的可接受方法是什么?例如可能 (1,10), (3,3), (7,13), (7,16), (8,1), (8,2), (15,2) 等 解决方案 pairs 默认按第一个元素比较,然后是第二个.因此,如果您不关心在第一个元素比较相等时保留顺序,那么您可以使用 std::sort: st
..
我想将一些数据输出到文件中.例如假设我有两个双精度向量: vector数据 1(10);向量数据2(10); 是否有一种简单的方法可以将其输出到文件中,以便第一行包含标题“data1"和“data2",然后是实际内容.的功能输出数据将传递各种不同的数组,因此对名称进行硬编码标题是不可能的 - 理想情况下我想转换变量名称到某个字符串,然后输出该字符串,后跟向量数组的内容.但是,我不确定如何将变量
..
我有一个像这样的 map: map>我的地图; 我已经使用以下方法将一些数据插入到我的地图中: myMap.insert(make_pair(first_name, make_pair(middle_name, last_name))); 我现在如何打印地图中的所有数据? 解决方案 for(map >::const_iterator it = myMap.begin();它 !=
..
如何通过比较作为 std::string 的 pair.first 来对这个 vector 进行排序?(不提供静态比较函数,也不使用 boost). 解决方案 std::vector>v;std::sort(v.begin(), v.end()); std::pair 重载 operator 先按 first 元素排序,然后按 second 元素排序.因此,如果您仅使用默认排序顺序 (o
..
Java 中没有 Pair 是否有充分的理由?这个 C++ 构造的等价物是什么?我宁愿避免重新实现自己的. 似乎 1.6 提供了类似的东西(AbstractMap.SimpleEntry),但这看起来很复杂. 解决方案 在 comp.lang.java.help 上的一个线程,Hunter Gratzner 给出了一些反对 Java 中 Pair 结构存在的论据.主要论点是 Pair
..
Java 中没有 Pair 是否有充分的理由?这个 C++ 构造的等价物是什么?我宁愿避免重新实现自己的. 似乎 1.6 提供了类似的东西(AbstractMap.SimpleEntry),但这看起来很复杂. 解决方案 在 comp.lang.java.help 上的一个线程,Hunter Gratzner 给出了一些反对 Java 中 Pair 结构存在的论据.主要论点是 Pair
..