问题标签 [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++ - 如何将 std::pair 的排序 std::list 转换为 std::map
我有一个std::list< std::pair<std::string,double> >
,我知道它是根据std::string element
.
由于我想做很多std::find_if
基于std::string
元素的事情,我相信一个std::map<string,double,MyOwnBinaryPredicate>
with lower_bound
andupper_bound
会更合适。
事实是我想以一种有效的方式加入insert
元素。std::map
所以我想使用一个额外的迭代器来insert
加快速度。
我相信最简单的方法是使用 a来const_reverse_iterator
遍历std::list
和使用begin()
.std::map
你会这样做,还是一个坏主意?
谢谢!
iphone - 等效于 C++ STL 容器“对“在Objective-C中?
我是 Objective-C 的新手,所以请不要过多地评价我。我想知道:有没有可以在 Objective-C 中使用的 C++ STL 对容器的等价物?
我想构建一个包含与 NSBool 关联的 NSInteger 的数组。我知道我可以使用一个数组,每个条目都是一个具有单个键值的 NSDictionary,但我发现它有点矫枉过正。
有任何想法吗?
谢谢。
c++ - 具有 2 个单元的结构与 std::pair?
可能重复:
使用具有两个字段和一对的结构有什么区别?
亲爱的大家,
我对pairs和struct有一个小问题。使用 std::pair 而不是具有两个单元格的结构有什么好处吗?我使用pairs 有一段时间了,但主要问题是可读性:如果你想表示例如一个双重(int“标签”,双重“值”),你可以使用:
或一个
如果您的语句具有“语义”意义,则代码变得更具可读性(您将始终知道 x.label 是什么。x.first 不是这种情况)。
但是,我想使用pair有一个优势。是性能更高还是其他?
c++ - 是否可以在没有 hack 的情况下“构造”`std::pair` 的字段?
在 C++ 中,编译以下代码:
给出一个错误:
我或多或少理解它为什么会发生,因为 cv 限定模板参数列表中的类型原则上可以给出“不兼容”的结果。即使在这种情况下它没有,编译器也无法知道它。
无论如何,有没有一种非黑客的方式来执行这种转换?我对使用reinterpret_cast
任何东西都持谨慎态度,因为我以前遇到过类型双关问题。另外,我不能使用临时变量,因为这是对性能至关重要的代码。
编辑:
这就是我正在做的事情。我正在实现一个与std::unordered_map
. 因此,它value_type
需要是一个pair <const key_type, mapped_type>
. 为了进行一些优化,我需要在内部将值存储为pair <key_type, mapped_type>
,而没有const
. 但是,如果我这样做,我不能(没有reinterpret_cast
)在容器上实现迭代器,因为它们需要返回对值的引用,而我只有对这些非常量对的引用。
c++ - 这个内存会被正确释放吗?
我有一个对指针让我们假设 std::pair< A*, B* >* 指针对。我为它分配了内存,在使用这对后我称之为删除指针对。
它还会调用 delete A 和 delete B 并完全释放内存吗?
如果我只调用 delete A 和 delete B 但没有删除指针对,那么它是内存泄漏吗?
c++ - C ++将字符串的副本存储在成对的向量中
我在定义为的类中有一个私有属性vector<pair<char *, int> > data;
。我用 向这个向量添加数据data.push_back(make_pair(p, r));
。后来,当我从向量中获取数据时,我得到了 p 值的错误数据。返回的数据是这样的��U3
。我认为这是因为正在存储指向 char 数组的指针。我将如何在向量中存储实际副本。如果它有帮助,则 char 数组将永远不会超过 255 chars + 1 用于 null 终止。
c++ - std::stack 损坏返回值
我已将代码简化为以下内容以说明我的问题:
当我使用 gcc -O1 标志时,来自 test() 函数的返回值被破坏。这是一些示例输出:
此代码适用于除“-O1”之外的所有 gcc 优化标志。如果我删除 my_stack 的声明,它也可以工作。您会将其归类为编译器错误,还是我缺少有关 std::stack 并返回 std::pair 值的内容?
c++ - 将移动语义与 std::pair 或 std::tuple 一起使用
假设您想利用移动语义,但您的一个可移动类需要是std::pair
. 目的是创建一个函数,该函数返回一个std::pair
可以被视为右值并转发的函数。
但是我看不到如何做到这一点,除非对其std::pair
自身进行内部更改,以使其了解移动语义。
考虑以下代码:
问题是std::make_pair
,以及std::pair
构造函数本身,需要两个对象并尝试制作它们的内部副本。这会导致它尝试调用复制构造函数。但在我的示例中,我希望能够将新对移动到中res
,并确保不制作任何副本。我认为这是不可能的,除非std::pair
它本身在内部定义了以下构造函数:
但它没有,至少在我使用的编译器(gcc 4.3.2)上没有。可能是我的编译器只是过时了,而实际上较新的版本将具有此移动感知构造函数。但是目前我对移动语义的理解有些不稳定,所以我不确定我是否只是在这里忽略了一些东西。那么,在没有实际重新实现的情况下,我想要实现的目标是否可行std::pair
?还是我的编译器刚刚过时?
c++ - 插入地图的首选/惯用方式是什么?
我已经确定了四种将元素插入 a 的不同方法std::map
:
其中哪一个是首选/惯用方式?(还有其他我没有想到的方法吗?)