#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
struct Book {
std:: string title; // Book name
int id; // Book id or ISBN number
float price; // Book price
} ;
void SortBooks( std:: vector < Book> & books)
{
// If your compiler doesn't support lambda's (or you don't like them)
// then create this function as pass it in place of the lambda:
//
// struct book_cmp
// {
// bool operator()(const Book& a, const Book& b) const
// {
// return a.title < b.title;
// }
// };
//
std:: sort ( books.begin ( ) , books.end ( ) , [ ] ( const Book& a, const Book& b)
{ return a.title < b.title ; }
) ;
}
void PrintBooks( const std:: vector < Book> & books)
{
for ( auto & book: books)
std:: printf ( "%d: %s for $%.2f\n " , book.id , book.title .c_str ( ) , book.price ) ;
}
int main( )
{
std:: vector < Book> books;
books.push_back ( { "Test" , 0 , 2.50 } ) ;
books.push_back ( { "A" , 1 , 2.50 } ) ;
books.push_back ( { "E" , 2 , 2.50 } ) ;
books.push_back ( { "F" , 3 , 2.50 } ) ;
std:: printf ( "Before:\n " ) ;
SortBooks( books) ;
PrintBooks( books) ;
books.push_back ( Book{ "B" , 4 , 2.50 } ) ;
std:: printf ( "\n After:\n " ) ;
SortBooks( books) ;
PrintBooks( books) ;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnN0cnVjdCBCb29rIHsKICAgIHN0ZDo6c3RyaW5nIHRpdGxlOyAvLyBCb29rIG5hbWUKICAgIGludCBpZDsgICAgICAgICAgICAvLyBCb29rIGlkIG9yIElTQk4gbnVtYmVyCiAgICBmbG9hdCBwcmljZTsgICAgICAgLy8gQm9vayBwcmljZQp9OwoKdm9pZCBTb3J0Qm9va3Moc3RkOjp2ZWN0b3I8Qm9vaz4mIGJvb2tzKQp7CiAgICAvLyBJZiB5b3VyIGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBsYW1iZGEncyAob3IgeW91IGRvbid0IGxpa2UgdGhlbSkKICAgIC8vIHRoZW4gY3JlYXRlIHRoaXMgZnVuY3Rpb24gYXMgcGFzcyBpdCBpbiBwbGFjZSBvZiB0aGUgbGFtYmRhOgogICAgLy8gCiAgICAvLyBzdHJ1Y3QgYm9va19jbXAKICAgIC8vIHsKICAgIC8vICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgQm9vayYgYSwgY29uc3QgQm9vayYgYikgY29uc3QKICAgIC8vICAgICB7CiAgICAvLyAgICAgICAgIHJldHVybiBhLnRpdGxlIDwgYi50aXRsZTsKICAgIC8vICAgICB9CiAgICAvLyB9OwogICAgLy8KICAgIHN0ZDo6c29ydChib29rcy5iZWdpbigpLCBib29rcy5lbmQoKSwgW10oY29uc3QgQm9vayYgYSwgY29uc3QgQm9vayYgYikKICAgICAgICB7IHJldHVybiBhLnRpdGxlIDwgYi50aXRsZTsgfQogICAgKTsKfQoKdm9pZCBQcmludEJvb2tzKGNvbnN0IHN0ZDo6dmVjdG9yPEJvb2s+JiBib29rcykKewogICAgZm9yKGF1dG8mIGJvb2s6IGJvb2tzKQogICAgICAgIHN0ZDo6cHJpbnRmKCIlZDogJXMgZm9yICQlLjJmXG4iLCBib29rLmlkLCBib29rLnRpdGxlLmNfc3RyKCksIGJvb2sucHJpY2UpOwp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6dmVjdG9yPEJvb2s+IGJvb2tzOwogICAgCiAgICBib29rcy5wdXNoX2JhY2soeyJUZXN0IiwgMCwgMi41MH0pOwogICAgYm9va3MucHVzaF9iYWNrKHsiQSIsIDEsIDIuNTB9KTsKICAgIGJvb2tzLnB1c2hfYmFjayh7IkUiLCAyLCAyLjUwfSk7CiAgICBib29rcy5wdXNoX2JhY2soeyJGIiwgMywgMi41MH0pOwoKICAgIHN0ZDo6cHJpbnRmKCJCZWZvcmU6XG4iKTsKICAgIFNvcnRCb29rcyhib29rcyk7CiAgICBQcmludEJvb2tzKGJvb2tzKTsKCiAgICBib29rcy5wdXNoX2JhY2soQm9va3siQiIsIDQsIDIuNTB9KTsKCiAgICBzdGQ6OnByaW50ZigiXG5BZnRlcjpcbiIpOwogICAgU29ydEJvb2tzKGJvb2tzKTsKICAgIFByaW50Qm9va3MoYm9va3MpOwp9Cg==