标签: std-pair

Objective-C中的C++ STL容器"pair <T1,T2>"的等价物?

我是Objective-C的新手,所以请不要过多地评价我.我想知道:我可以在Objective-C中使用相当于C++ STL对的容器吗?

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

有任何想法吗?

谢谢.

c++ iphone stl objective-c std-pair

15
推荐指数
2
解决办法
1万
查看次数

为什么std :: pair没有迭代器?

为什么没有std::pair迭代器?

std::pair应提供iteratorconst_iterator以及begin()end()-只为他们的两个成员.

我认为它会很有用,因为我们可以将它们传递给期望迭代的模板化函数,比如vectorset.

这有什么缺点吗?

c++ stl std-pair

15
推荐指数
1
解决办法
6094
查看次数

我可以使用std :: pair,但重命名.first和.second成员名称?

我遇到的一个常见设计问题是,我将两个变量捆绑在一起,然后失去了以有意义的方式引用它们的能力.

std::pair<int,int> cords;
cord.first = 0; //is .first the x or y coordinate?
cord.second = 0; //is .second the x or y coordinate?
Run Code Online (Sandbox Code Playgroud)

我考虑过编写基本结构,但后来失去了许多带来的好处std::pair:

  • make_pair
  • 非成员重载运算符
  • 交换
  • 得到
  • 等等

有一种方法来重命名或用于提供一个替代标识符firstsecond数据成员?

我希望利用所有接受的功能std::pair,
但仍然可以通过以下方式使用它们:

std::pair<int,int> cords;  
//special magic to get an alternative name of access for each data member.

//.first and .second each have an alternative name.
cords.x = 1;
assert(cords.x == cords.first);
Run Code Online (Sandbox Code Playgroud)

c++ typedef std-pair c++17

15
推荐指数
3
解决办法
3998
查看次数

基于其值的自定义排序向量

我有以下向量:

std::vector< std::pair<int, int> > vectorOfPairs
Run Code Online (Sandbox Code Playgroud)

包括以下项目:

0, 1
0, 2
1, 4
2, 3
3, 4
4, 5
5, 6
Run Code Online (Sandbox Code Playgroud)

我想以一种方式对它们进行排序,即每对中的第二个分量等于向量中最近对的第一个分量,如下所示:

0, 1
1, 4
4, 5
5, 6
0, 2
2, 3
3, 4
Run Code Online (Sandbox Code Playgroud)

我不知道这是否足够明显,我会附上一张图片,显示我正在尝试做的事情:

在此输入图像描述

我觉得我应该使用sort某种比较器,但我迷失在这里:

std::sort(vectorOfPairs.begin(), vectorOfPairs.end(), MyComparator);
Run Code Online (Sandbox Code Playgroud)
bool MyComparator(pair<int, int> a, pair<int, int> b) {
    if(some_kind_of_comparison){
        return true;
    } 
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我是c ++的新手,如果有人可以帮我解决如何做到这一点的伪代码,我将非常感激.

c++ vector std-pair

15
推荐指数
1
解决办法
645
查看次数

按字符串排序std :: vector <std :: pair <std :: string,bool >>?

我如何vector通过比较pair.first哪一个来对此进行排序std::string?(不提供静态比较功能,也不使用boost).

c++ sorting stl vector std-pair

14
推荐指数
1
解决办法
1万
查看次数

为什么`initializer_list <pair>`和`initializer_list <tuple>`表现不一样?

以下代码编译并运行:

#include <initializer_list>
#include <iostream>
#include <vector>
#include <tuple>

void ext( std::initializer_list<std::pair<double, std::vector<double> >> myList )
{
    //Do something
}

///////////////////////////////////////////////////////////

int main(void) {
    ext( { {1.0, {2.0, 3.0, 4.0} } } );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

虽然这个没有:

#include <initializer_list>
#include <iostream>
#include <vector>
#include <tuple>

void ext( std::initializer_list<std::tuple<double, std::vector<double> >> myList )
{
    //Do something
}

///////////////////////////////////////////////////////////

int main(void) {
    ext( { {1.0, {2.0, 3.0, 4.0} } } );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

唯一的区别是,在第一种情况下,ext()函数接受类型initializer_list<pair>(工作)的参数而另一个使用initializer_list<tuple>(不起作用).但是,cplusplus.com表示 …

c++ tuples initializer-list std-pair

14
推荐指数
1
解决办法
955
查看次数

如何初始化const std :: pair?

让我们说我有一个:

#include <utility>
using namespace std;
typedef pair<int, int> my_pair;
Run Code Online (Sandbox Code Playgroud)

如何初始化const my_pair?

c++ stl std-pair

13
推荐指数
3
解决办法
3万
查看次数

任何STL数据结构,如对,给出三个项目(类型)而不是两个?

问题1:

我正在使用C++ 11,我正在学习.我意识到我可以用两对来做到这一点:

pair<pair<<#class _T1#>, <#class _T2#>>, <#class _T3#>>
Run Code Online (Sandbox Code Playgroud)

这是最好的方式吗?

问题2:

如果我不需要不同的类型,两个项目的类型相同,使用对是浪费,那么我应该使用什么?三件物品?(同样的类型)

c++ data-structures c++11 std-pair

13
推荐指数
1
解决办法
1万
查看次数

什么时候使用std :: pair好?

我的印象是,定义自己的结构总是更好,这样我就可以使用有意义的字段名而不是firstsecond.

标准使用的一个地方std::pair是访问元素std::map.first是关键和second价值.拥有一个特定的key_value_pair模板并不是更好,并将其字段称为keyvalue不是firstsecond?在我看来,这将使代码更加可读,免费.

c++ coding-style std-pair

12
推荐指数
1
解决办法
2605
查看次数

一个线性元组/对在 C++ 中解包,多次重用同一变量

我已经看到是否有一个单行代码可以将元组/对解包到引用中?并知道如何将元组/对中的值解压到单行中,如下所示

auto [validity, table] = isFieldPresentAndSet(r, "is_federated");
Run Code Online (Sandbox Code Playgroud)

这里isFieldPresentAndSet返回一个元组。

现在我想在多次连续调用中重用这两个变量,isFieldPresentAndSet如下所示

auto [validity, table] = isFieldPresentAndSet(r, "is_federated");
auto [validity, table] = isFieldPresentAndSet(r, "gslb_sp_enabled");
Run Code Online (Sandbox Code Playgroud)

validity然后检查和的值table。但这给了我编译错误,因为我第二次重新定义了validityand变量。table如果将第二行更改为

[validity, table] = isFieldPresentAndSet(r, "gslb_sp_enabled"); 
Run Code Online (Sandbox Code Playgroud)

或者

validity, table = isFieldPresentAndSet(r, "gslb_sp_enabled"); 
Run Code Online (Sandbox Code Playgroud)

它仍然给我编译错误。

有什么办法可以做到这一点吗?

c++ std-pair c++17

12
推荐指数
1
解决办法
1092
查看次数