问题标签 [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.

0 投票
3 回答
1835 浏览

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_boundandupper_bound会更合适。

事实是我想以一种有效的方式加入insert元素。std::map所以我想使用一个额外的迭代器来insert加快速度。

我相信最简单的方法是使用 a来const_reverse_iterator遍历std::list和使用begin().std::map

你会这样做,还是一个坏主意?

谢谢!

0 投票
5 回答
10445 浏览

iphone - 等效于 C++ STL 容器“对“在Objective-C中?

我是 Objective-C 的新手,所以请不要过多地评价我。我想知道:有没有可以在 Objective-C 中使用的 C++ STL 对容器的等价物?

我想构建一个包含与 NSBool 关联的 NSInteger 的数组。我知道我可以使用一个数组,每个条目都是一个具有单个键值的 NSDictionary,但我发现它有点矫枉过正。

有任何想法吗?

谢谢。

0 投票
5 回答
19944 浏览

c++ - 具有 2 个单元的结构与 std::pair?

可能重复:
使用具有两个字段和一对的结构有什么区别?

亲爱的大家,

我对pairs和struct有一个小问题。使用 std::pair 而不是具有两个单元格的结构有什么好处吗?我使用pairs 有一段时间了,但主要问题是可读性:如果你想表示例如一个双重(int“标签”,双重“值”),你可以使用:

或一个

如果您的语句具有“语义”意义,则代码变得更具可读性(您将始终知道 x.label 是什么。x.first 不是这种情况)。

但是,我想使用pair有一个优势。是性能更高还是其他?

0 投票
2 回答
483 浏览

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)在容器上实现迭代器,因为它们需要返回对值的引用,而我只有对这些非常量对的引用。

0 投票
2 回答
132 浏览

c++ - 这个内存会被正确释放吗?

我有一个对指针让我们假设 std::pair< A*, B* >* 指针对。我为它分配了内存,在使用这对后我称之为删除指针对。

它还会调用 delete A 和 delete B 并完全释放内存吗?

如果我只调用 delete A 和 delete B 但没有删除指针对,那么它是内存泄漏吗?

0 投票
5 回答
1878 浏览

c++ - C ++将字符串的副本存储在成对的向量中

我在定义为的类中有一个私有属性vector<pair<char *, int> > data;。我用 向这个向量添加数据data.push_back(make_pair(p, r));。后来,当我从向量中获取数据时,我得到了 p 值的错误数据。返回的数据是这样的��U3。我认为这是因为正在存储指向 char 数组的指针。我将如何在向量中存储实际副本。如果它有帮助,则 char 数组将永远不会超过 255 chars + 1 用于 null 终止。

0 投票
2 回答
270 浏览

c++ - std::stack 损坏返回值

我已将代码简化为以下内容以说明我的问题:

当我使用 gcc -O1 标志时,来自 test() 函数的返回值被破坏。这是一些示例输出:

此代码适用于除“-O1”之外的所有 gcc 优化标志。如果我删除 my_stack 的声明,它也可以工作。您会将其归类为编译器错误,还是我缺少有关 std::stack 并返回 std::pair 值的内容?

0 投票
2 回答
15311 浏览

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?还是我的编译器刚刚过时?

0 投票
3 回答
1658 浏览

c++ - std::make_heap 成对

是否有可能make_heap()与向量中的一对有关?

我在用着:

我使用对象函数按第一个成员对这对进行排序,但它崩溃了。

代码是:

[取自这里]

0 投票
9 回答
145164 浏览

c++ - 插入地图的首选/惯用方式是什么?

我已经确定了四种将元素插入 a 的不同方法std::map

其中哪一个是首选/惯用方式?(还有其他我没有想到的方法吗?)