问题标签 [std-pair]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - STL map插入效率:[] vs. insert
地图插入有两种方式:
或者
我的问题是,哪个操作更快?人们通常说第一个比较慢,因为 STL 标准首先在 map 中不存在“key”时“插入”一个默认元素,然后将“val”分配给默认元素。
但我不认为第二种方式更好,因为'make_pair'。与pair<T1, T2>(key, val)
. 无论如何,他们都做了两个任务,一个是将“key”分配给“pair.first”,另一个是将“val”分配给“pair.second”。完成pair后,map插入由'pair.second'初始化的元素。
所以第一种方式是 1.' default construct of typeof(val)
' 2. assignment 第二种方式是 1. assignment 2. ' copy construct of typeof(val)
'
c++ - 如何指定对的比较?
有一个pair
我有一个vector
对象myPair
。我需要使用整数make_heap
的第二个值将它转换为最小堆。pair
我怎样才能做到这一点?我不确定如何定义比较操作。
c++ - 为什么从 C++11 中删除了对范围访问?
我刚刚发现,在某个时刻,C++11 草案有std::begin
/std::end
重载std::pair
允许将一对迭代器视为适合在基于范围的 for 循环中使用的范围(N3126,第 20.3.5.5 节),但这有自从被删除。
有谁知道它为什么被删除?
我发现删除非常不幸,因为似乎没有其他方法可以将一对迭代器视为一个范围。确实:
- 在基于范围的 for 循环中查找开始/结束的规则表明,开始/结束在 1) 中作为范围对象的成员函数 2) 作为“关联命名空间”中的自由函数进行查找
std::pair
没有开始/结束成员函数- 通常,唯一关联的命名空间
std::pair<T, U>
是命名空间 std - 我们不允许超载
std::begin
/std::end
为std::pair
自己 - 我们不能专门化
std::begin
/std::end
forstd::pair
(因为专门化必须是部分的,而函数不允许这样做)
还有其他我想念的方式吗?
c++ - C++:向量,int>>
这就是我的目标...
其中 x 是向量 var_name 的大小,y 是对内向量的大小。
上面的语句不起作用,因为 pair 模板只允许常量。我怎样才能让我的向量分别大小为 x 和 y?
c++ - 向量<对> 不可能?
所以我尝试制作一个向量,其中元素是结构指针和整数对,我开始认为这可能是不可能的..
假设我有以下结构:
和一个向量:
然后我尝试创建一个新节点并将其放入向量中,显然它不起作用:
编译器对我咆哮说:nod1 不能出现在常量表达式中错误:模板参数 1 无效错误:模板结构 std::pair 的模板参数列表中参数 2 的类型/值不匹配
这只是不可能的事情吗?有什么可以替代的解决方案?您的意见将不胜感激!
c++ - 一对优先级队列的自定义比较器>
这给了我错误
我PairComparator
从 cplusplus.com 论坛找到了代码
c++ - 有一双如何在地图中查找它是否属于某对的一部分?
我们有一对字符串,例如这样的一对Accept-Language : RU ,
,我们通过映射搜索,例如 http 请求标头。我们只需要知道 map 中是否存在这样的对 - 一个布尔值。如何进行软搜索意味着我们不需要找到完全相同的配对,但配对Accept-Language : ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
对我们来说也是有效的配对,如果存在这样的配对,我们可以认为我们已经发现我们的地图包含我们的配对。如何在 C++ 中创建用于执行此类搜索的函数?
c++ - 只有两个成员的 std::pair 和 std::tuple 之间的区别?
只有两个成员的anstd::pair
和an有区别吗?std::tuple
(除了std::pair
需要两个而且只有两个成员并且tuple
可能或多或少的明显......)
c++ - c++ 中的 std::pair 数组有问题吗?
我今天正在玩一些代码,我想到了将一堆对放在一个数组中的想法,但我无法让它工作。这是代码:
这个程序的输出并不是我输入的全部。
c++ - 在 std::pair 中存储不可复制(但可移动)的对象
我正在尝试将不可复制(但可移动)的对象存储在 std::pair 中,如下所示:
但是我在使用 gcc 4.6 时遇到以下编译器错误:
似乎编译器正在尝试调用std::pair<_T1, _T2>::pair(_U1&&, const _T2&)
构造函数,这当然是有问题的。编译器不应该调用std::pair<_T1, _T2>::pair(_U1&&, _U2&&)
构造函数吗?这里发生了什么?
编辑:好的,我知道提供显式移动构造函数可以解决问题,但我还是有点困惑。
假设我通过继承boost::noncopyable
而不是声明我自己的私有复制构造函数来使类不可复制。
以下工作正常,表明隐式生成了移动构造函数:
但是,std::pair
它仍然不起作用:
错误:
此外,添加= default
-ed 默认构造函数和移动构造函数也无济于事!
我得到同样的错误!我必须自己明确给出移动构造函数的定义,如果类有很多成员,这很烦人: