vector非成员函数和成员函数的使用
非成员函数和成员函数的区别
class A{
public:
void f1(){};
void f2();
};
void A::f2(){}
void f3(){};
vector中函数的使用
sort、for_each、random_shuffle
#include "iostream"
#include "string"
#include "vector"
#include <algorithm>
struct Review
{
std::string title;
int rating;
};
bool FillReview(Review& rr);
void ShowReview(const Review& rr);
bool worseThan(const Review& r1, const Review& r2);
bool operator<(const Review& r1, const Review& r2);
int main() {
using namespace std;
vector<Review> books;
Review temp;
while (FillReview(temp))
books.push_back(temp);
if (books.size() > 0)
{
cout << "Thank you. You entered the following "
<< books.size() << " ratings:\n"
<< "Rating\tBook\n";
for_each(books.begin(), books.end(), ShowReview);
sort(books.begin(), books.end());
cout << "Sorted by title:\nRating\tBook\n";
for_each(books.begin(), books.end(), ShowReview);
sort(books.begin(), books.end(), worseThan);
cout << "Sorted by rating:\nRating\tBook\n";
for_each(books.begin(), books.end(), ShowReview);
random_shuffle(books.begin(), books.end());
cout << "After shuffling:\nRating\tBook\n";
for_each(books.begin(), books.end(), ShowReview);
}
else
cout << "No entries. ";
cout << "Bye.\n";
}
bool FillReview(Review& rr)
{
std::cout << "Enter book title (quit to quit): ";
std::getline(std::cin, rr.title);
if (rr.title == "quit") {
return false;
}
std::cout << "Enter book rating: ";
std::cin >> rr.rating;
if (!std::cin)
return false;
while (std::cin.get() != '\n')
continue;
return true;
}
void ShowReview(const Review& rr)
{
std::cout << rr.rating << "\t" << rr.title << std::endl;
}
bool worseThan(const Review& r1, const Review& r2)
{
if (r1.rating < r2.rating)
return true;
else
return false;
}
bool operator<(const Review& r1, const Review& r2)
{
if (r1.title < r2.title)
return true;
else if (r1.title == r2.title && r1.rating < r2.rating)
return true;
else
return false;
}