c++: priority_queue: lambda-expression in template-argument

Edamame

I am trying to create a priority_queue with each element as a 3D vector. The element whose third dimension has the largest value would become the priority element.

Here is my code:

   priority_queue< vector<int>, vector<vector<int>>, [](vector<int> &v1, vector<int> &v2){
        return v1[2] > v2[2];
    }> pq{};

but I got the following error:

error: lambda-expression in template-argument

Any idea what I did wrong? Thanks!

n314159

You cant have a lambda (which is an object) in a type template declaration (where a type is needed. Do instead:

auto lambda =  [](vector<int> &v1, vector<int> &v2){
    return v1[2] > v2[2];
};
priority_queue< vector<int>, vector<vector<int>>,decltype(lambda)> pq{lambda};

We also need to pass the lambda since it is not default constructible.

Form C++20 on, we can do the following:

priority_queue< vector<int>, vector<vector<int>>,decltype([](vector<int> &v1, vector<int> &v2){
    return v1[2] > v2[2];
};
)> pq{};

Here there come two new featurs of lambdas into play. First that you can take the type of it directly (formally: In C++17 you cannot have a lambda-expression in unevaluated context) and second that lambdas are default constructible. But right now, that is not yet possible.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++에서 STL의 priority_queue

분류에서Dev

About C++ priority_queue what does vector<int> do in priority_queue<int, vector<int>, greater<int> > pq?

분류에서Dev

C ++ priority_queue에 대하여 vector <int>는 priority_queue <int, vector <int>, greater <int>> pq에서 무엇을합니까?

분류에서Dev

C ++ : priority_queue : 템플릿 인수의 람다 식

분류에서Dev

C ++ : 구조체 및 decltype 비교기의 priority_queue

분류에서Dev

priority_queue 및 일종의 C ++에서 functor 및 함수

분류에서Dev

priority_queue 템플릿의 C ++ 컴파일 오류

분류에서Dev

C ++ priority_queue에서 요소를 팝하는 시간

분류에서Dev

Lambda Expression in c++ std::copy_if

분류에서Dev

람다 비교기 오류가있는 맵을 사용하는 C ++ priority_queue

분류에서Dev

C ++ 사용자 지정 비교 함수로 priority_queue 초기화

분류에서Dev

C ++에서 priority_queue의 객체를 어떻게 정렬합니까?

분류에서Dev

컨테이너의 크기를 C ++에서 priority_queue의 우선 순위로 사용할 수 있습니까?

분류에서Dev

C ++에서 클래스의 priority_queue를 초기화하는 방법은 무엇입니까?

분류에서Dev

Lambda expression to Iterate through a collection and edit C#

분류에서Dev

Is there a java lambda expression equivalent of the C# linq let?

분류에서Dev

priority_queue의 ITERATOR 문제

분류에서Dev

Function taking lambda expression

분류에서Dev

std::pair in lambda expression

분류에서Dev

Lambda expression select and add

분류에서Dev

AddHandler Lambda Expression

분류에서Dev

Generic with lambda expression

분류에서Dev

std::priority_queue compare and the age of queue elements

분류에서Dev

C ++ STL의 priority_queue에서 만드는 것처럼 클래스 내에서 비교기 함수를 만드는 방법

분류에서Dev

Template argument functions as class members

분류에서Dev

Conditional numerical constraint on template argument

분류에서Dev

Template argument deduction, unclear case

분류에서Dev

C ++ 20 : std :: array as non-type template argument reshuffles 요소

분류에서Dev

C++ custom allocator size argument as template parameter throws compiler error

Related 관련 기사

  1. 1

    C ++에서 STL의 priority_queue

  2. 2

    About C++ priority_queue what does vector<int> do in priority_queue<int, vector<int>, greater<int> > pq?

  3. 3

    C ++ priority_queue에 대하여 vector <int>는 priority_queue <int, vector <int>, greater <int>> pq에서 무엇을합니까?

  4. 4

    C ++ : priority_queue : 템플릿 인수의 람다 식

  5. 5

    C ++ : 구조체 및 decltype 비교기의 priority_queue

  6. 6

    priority_queue 및 일종의 C ++에서 functor 및 함수

  7. 7

    priority_queue 템플릿의 C ++ 컴파일 오류

  8. 8

    C ++ priority_queue에서 요소를 팝하는 시간

  9. 9

    Lambda Expression in c++ std::copy_if

  10. 10

    람다 비교기 오류가있는 맵을 사용하는 C ++ priority_queue

  11. 11

    C ++ 사용자 지정 비교 함수로 priority_queue 초기화

  12. 12

    C ++에서 priority_queue의 객체를 어떻게 정렬합니까?

  13. 13

    컨테이너의 크기를 C ++에서 priority_queue의 우선 순위로 사용할 수 있습니까?

  14. 14

    C ++에서 클래스의 priority_queue를 초기화하는 방법은 무엇입니까?

  15. 15

    Lambda expression to Iterate through a collection and edit C#

  16. 16

    Is there a java lambda expression equivalent of the C# linq let?

  17. 17

    priority_queue의 ITERATOR 문제

  18. 18

    Function taking lambda expression

  19. 19

    std::pair in lambda expression

  20. 20

    Lambda expression select and add

  21. 21

    AddHandler Lambda Expression

  22. 22

    Generic with lambda expression

  23. 23

    std::priority_queue compare and the age of queue elements

  24. 24

    C ++ STL의 priority_queue에서 만드는 것처럼 클래스 내에서 비교기 함수를 만드는 방법

  25. 25

    Template argument functions as class members

  26. 26

    Conditional numerical constraint on template argument

  27. 27

    Template argument deduction, unclear case

  28. 28

    C ++ 20 : std :: array as non-type template argument reshuffles 요소

  29. 29

    C++ custom allocator size argument as template parameter throws compiler error

뜨겁다태그

보관