标签: std-pair

什么是std :: pair?

什么是std::pair,为什么我会使用它,以及boost::compressed_pair带来什么好处?

c++ boost stl std-pair

42
推荐指数
4
解决办法
4万
查看次数

如何在C++中创建一组无序的整数对?

以下程序不会编译一组无序的整数对,但它会对整数进行编译.Can unordered_set和它的成员函数可以用在用户定义的类型上,我该如何定义它?

#include <unordered_set>
...

class A{
...
private: 
    std::unordered_set< std::pair<int, int> > u_edge_;
};
Run Code Online (Sandbox Code Playgroud)

编译错误:

错误:没有匹配函数来调用'std :: unordered_set> :: unordered_set()'

c++ unordered-set std-pair

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

在地图元素上使用for_each

我有一个地图,我想在每个数据类型对象成员函数上执行调用.我还知道如何在任何序列上执行此操作但是,是否可以在关联容器上执行此操作?

我能找到的最接近的答案是:Boost.Bind访问std :: for_each中的std :: map元素.但是我不能在我的项目中使用boost,那么是否有一个STL替代品,我缺少boost :: bind?

如果不可能,我想创建一个指向数据对象的指针的临时序列,然后在其上调用for_each,如下所示:

class MyClass
{
public:
 void Method() const;
}

std::map<int, MyClass> Map;
//...

std::vector<MyClass*> Vector;
std::transform(Map.begin(), Map.end(), std::back_inserter(Vector), std::mem_fun_ref(&std::map<int, MyClass>::value_type::second));
std::for_each(Vector.begin(), Vector.end(), std::mem_fun(&MyClass::Method));
Run Code Online (Sandbox Code Playgroud)

它看起来太混淆了,我真的不喜欢它.有什么建议?

c++ algorithm stl stdmap std-pair

41
推荐指数
4
解决办法
11万
查看次数

如何使用可选元素初始化 C++17 对向量

在 C++17 中,如何使用可选元素声明和初始化成对(或元组)向量?

    std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true},
                                                           {2, false}, 
                                                           {3, nullptr}};
Run Code Online (Sandbox Code Playgroud)

我有一对,其中第二个元素可能为空/可选。

c++ vector optional std-pair c++17

36
推荐指数
2
解决办法
2569
查看次数

有没有办法轻松处理返回std :: pairs的函数?

C++ 11具有std::minmax_element返回一对值的函数.然而,这对于处理和读取来说是相当混乱的,并且产生一个额外的,后来无用的变量来污染范围.

auto lhsMinmax = std::minmax_element(lhs.begin(), lhs.end());
int &lhsMin = *(lhsMinMax.first);
int &lhsMax = *(lhsMinmax.second);
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?就像是:

int lhsMin;
int lhsMax;
std::make_pair<int&, int&>(lhsMin, lhsMax).swap(
    std::minmax_element(lhs.begin(), lhs.end()));
Run Code Online (Sandbox Code Playgroud)

c++ tuples minmax c++11 std-pair

33
推荐指数
3
解决办法
2171
查看次数

在地图中使用pair作为键(C++/STL)

我想使用STL中的一对作为地图的关键.

#include <iostream>
#include <map>

using namespace std;

int main() {

typedef pair<char*, int> Key;
typedef map< Key , char*> Mapa;

Key p1 ("Apple", 45);
Key p2 ("Berry", 20);

Mapa mapa;

mapa.insert(p1, "Manzana");
mapa.insert(p2, "Arandano");

return 0;

}
Run Code Online (Sandbox Code Playgroud)

但是编译器会抛出一堆不可读的信息,而且我对C和C++很新.

如何在地图中使用一对作为键?一般而言,我如何使用任何类型的结构(对象,结构等)作为地图中的键?

谢谢!

c++ stl map std-pair

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

使用带有两个字段和一对的结构有什么区别?

使用具有两个字段和一对的结构之间的内存分配和效率有什么区别?

c++ struct std std-pair

31
推荐指数
3
解决办法
3014
查看次数

std :: pair <int,int> vs struct with two int's

在ACM示例中,我必须构建一个用于动态编程的大表.我不得不在每个单元格中存储两个整数,所以我决定去找一个std::pair<int, int>.但是,分配大量的数组需要1.5秒:

std::pair<int, int> table[1001][1001];
Run Code Online (Sandbox Code Playgroud)

之后,我将此代码更改为

struct Cell {
    int first;
    int second;
}

Cell table[1001][1001];
Run Code Online (Sandbox Code Playgroud)

并且分配花了0秒.

是什么解释了这个巨大的时间差异?

c++ performance std-pair

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

C++向量对的初始化

我有

vector< pair<int, int>> myVec (N);
Run Code Online (Sandbox Code Playgroud)

我希望所有对都初始化为-1,-1.

c++ vector std-pair

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

std::pair 内的初始化列表

这段代码:

#include <iostream>
#include <string>

std::pair<std::initializer_list<std::string>, int> groups{ { "A", "B" }, 0 };

int main()
{
    for (const auto& i : groups.first)
    {
        std::cout << i << '\n';
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译但返回段错误。为什么?

在 gcc 8.3.0 和在线编译器上测试。

c++ std std-pair

26
推荐指数
1
解决办法
795
查看次数

标签 统计

c++ ×10

std-pair ×10

stl ×3

std ×2

vector ×2

algorithm ×1

boost ×1

c++11 ×1

c++17 ×1

map ×1

minmax ×1

optional ×1

performance ×1

stdmap ×1

struct ×1

tuples ×1

unordered-set ×1