#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>
#include <locale>
#define BOOST_ASSIGN_MAX_PARAMS 6
#include <boost/assign/list_of.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
using namespace boost::assign;
namespace lm = boost::lambda;
struct lib_record
{
lib_record(
size_t id, const std::string& author, const std::string& title,
size_t year, const std::string& publisher, size_t pages) :
id_(id), author_(author), title_(title),
year_(year), publisher_(publisher), pages_(pages)
{
}
size_t id_;
std::string author_;
std::string title_;
size_t year_;
std::string publisher_;
size_t pages_;
};
typedef std::vector<lib_record> library;
int main()
{
library lib = list_of<lib_record>
(1, "Петя", "Title 1", 2000, "Publisher 1", 100)
(1, "Маша", "Title 3", 2002, "Publisher 2", 300)
(1, "Вася", "Title 2", 2001, "Publisher 3", 200)
(1, "Катя", "Title 4", 1999, "Publisher 1", 400)
;
// Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года.
const size_t year = 2000; // выводим всё изданное после 2000 года
library oth;
setlocale(LC_ALL, ".1251");
std::remove_copy_if(
lib.begin(), lib.end(), std::back_inserter(oth),
&lm::_1 ->* &lib_record::year_ <= year
);
std::sort(oth.begin(), oth.end(),
&lm::_1 ->* &lib_record::author_ < &lm::_2 ->* &lib_record::author_
);
std::for_each(oth.begin(), oth.end(),
std::cout << &lm::_1 ->* &lib_record::author_ << ": " << &lm::_1 ->* &lib_record::title_ << "\n"
);
return 0;
}
[C/C++] Переписать код
Для книг, хранящихся в библиотеке, задаются:
- регистрационный номер книги;
- автор;
- название;
- год издания;
- издательство;
- количество страниц.
Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года.
Помогите, пожалуйста, переписать из Visual С++ на Borland C++ 5.02
Код:
На визуальнике, типа сам писал? ;) Как, работает?
Используемые средства:
Visual Studio 2008
Boost C++ Library