c++ - Sort std::vector<int> but ignore a certain number -


i have std::vector<int> of size 10 , each entry -1. vector represents leaderboard game (high scores), , -1 means there no score entry.

std::vector<int> myvector; myvector.resize(10, -1); 

when game started, want load high score file. load each line (up 10 lines), convert value found int std::stoi, , if number >0 replace -1 in vector @ current position.

all works. problem:

since values in file aren't sorted, want sort myvector after load entries. with

std::sort(myvector.begin(), myvector.end()); 

this sorts in ascending order (lower score better in game).

the problem that, since vector filled -1 , there aren't 10 entries saved in high scores file, vector might contain few -1 in addition player's scores.

that means when sorting vector above code, -1 appear before player's scores.

my question is: how sort vector (in ascending order), entries -1 put @ end (since don't represent real score)?

combine partitioning , sorting:

std::sort(v.begin(),           std::partition(v.begin(), v.end(), [](int n){ return n != -1; })); 

if store iterator returned partition, have complete description of range of non-trivial values, don't need −1s later.


Comments

Popular posts from this blog

html - Styling progress bar with inline style -

java - Oracle Sql developer error: could not install some modules -

How to use autoclose brackets in Jupyter notebook? -