0

such as pushing back using a holding variable book (title, author, ISBN)

vector <Book> books;
Book book1("a", "Jim John", 1000);
Book book2("b", "Jim John", 1001);
Book book3("c", "Billy Bill", 1002);
Book book4("d", "Greg Lumburge", 1003);
Book book5("e", "Dallas Orange", 1004);
Book book6("f", "Old McDonald", 1005);

books.push_back(book1);
books.push_back(book2);
books.push_back(book3);
books.push_back(book4);
books.push_back(book5);
books.push_back(book6);
user3549747
  • 35
  • 1
  • 1
  • 6

2 Answers2

2

With a compiler that supports the C++11 standard you can use emplace_back, like this:

vector <Book> books;
books.emplace_back("a", "Jim John", 1000);
books.emplace_back("b", "Jim John", 1001);
books.emplace_back("c", "Billy Bill", 1002);
books.emplace_back("d", "Greg Lumburge", 1003);
books.emplace_back("e", "Dallas Orange", 1004);
books.emplace_back("f", "Old McDonald", 1005);

But easier still, with C++11, is to just list all that data in a curly braces initializer:

vector <Book> books =
{
    {"a", "Jim John", 1000},
    {"b", "Jim John", 1001},
    {"c", "Billy Bill", 1002},
    {"d", "Greg Lumburge", 1003},
    {"e", "Dallas Orange", 1004},
    {"f", "Old McDonald", 1005}
};

And then it's easy to add a const, if appropriate.


In C++03 you can do this instead:

static Book const data[]    =
{
    Book("a", "Jim John", 1000),
    Book("b", "Jim John", 1001),
    Book("c", "Billy Bill", 1002),
    Book("d", "Greg Lumburge", 1003),
    Book("e", "Dallas Orange", 1004),
    Book("f", "Old McDonald", 1005)
};
int const data_size = sizeof( data )/sizeof( *data );

vector <Book> books( data, data + data_size );
Cheers and hth. - Alf
  • 142,714
  • 15
  • 209
  • 331
0

If you can use C++11, then you can use an initializer list:

vector<Book> books = {
    {"a", "Jim John", 1000},
    {"b", "Jim John", 1001},
    {"c", "Billy Bill", 1002},
    {"d", "Greg Lumburge", 1003},
    {"e", "Dallas Orange", 1004},
    {"f", "Old McDonald", 1005},
};
nneonneo
  • 171,345
  • 36
  • 312
  • 383