Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6995571
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T20:02:49+00:00 2026-05-27T20:02:49+00:00

I am pushing stuff into a priority Queue and I’ve made a comparison method

  • 0

I am pushing stuff into a priority Queue and I’ve made a comparison method for elements that go in there , when I checked the order , I realized I wanted elements to go in the other way around , so I went and changed all the boolean returns from my comparison method to be opposite of what they originally were and now it gives me a million assertion failures. If I ignore them , the program still works as expected , but why the assert fails ? Why should the program care ?

 bool operator()(charElement &operand1,charElement &operand2)
{
    // If the frequency of op1 < op2 then return true
    if(operand1.i_frequency < operand2.i_frequency) return true; //change to false

    // If the frequency of op1 > op2 then return false
    if(operand1.i_frequency > operand2.i_frequency)return false; //change to true

    // If the frequency of op1 == op2 then return true (that is priority is indicated to be less even though frequencies are equal)
    if(operand1.i_frequency == operand2.i_frequency)return true; //change to false

    // By default , return true (that is priority is indicated to be less)
    return true; //change to false
}

By the way, why was my query downvoted ? I try to ask sane questions and I believe this is one of them.

Specifics : I changed the operator definition to what @sehe suggested. Now if I add a not operator to the return value, it gives me assertion failures (invalid operator<) inside the include file , line number 2457. I checked the file , it seems that the error is in an inline method called Push_heap_0 , but I am stumped as to what that code does

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T20:02:49+00:00Added an answer on May 27, 2026 at 8:02 pm

    Can’t you simply reverse the order of the parameters? That is, replace:

    bool operator()(charElement &operand1,charElement &operand2)
    

    with:

    bool operator()(charElement &operand2,charElement &operand1)
    

    Then you can leave the body of the function as it is.

    On a side note, comparisons are read-only operations, and we should always respect const correctness:

    bool operator()(const charElement& operand2, const charElement& operand1)
    

    Also, you are not allowed to return true if the elements are equal:

    if(operand1.i_frequency == operand2.i_frequency)return true;   // HUGE PROBLEM!
    

    You must always return false in that case, no matter if you want “normal” or “backwards” order.

    The opposite of < is not >, but >=. This seems to be hard for programmers to grasp.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm pushing elements into an array during a while statement. Each element is a
Most examples of creating remote branches involve pushing from a local branch Is there
I'm requesting stuff from the web using web services that return XML. This works
I am having issues pushing my codes into my Bazaar repository. It worked earlier
I'm pushing my values into the array... while ( ... ) { push @array,
I'm working on a view controller that can be presented modally or pushed into
I've been pushing for continuous integration at my company since I joined 5 months
I am pushing 2 view controllers in to navigation stack in ApplicationDidFinishLaunching. [navigationController pushViewController:favorites
I asked before about pixel-pushing, and have now managed to get far enough to
Our team has recently been considering pushing out a minor registry fix to users

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.