有没有一种方法可以在for循环中将多个变量推回到一个向量中

Is there a way to push_back multiple variables into a vector in a for loop?

本文关键字:变量 向量 一个 for 方法 一种 有没有 循环      更新时间:2023-10-16

例如使用保持变量进行推回书籍(标题、作者、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);

使用支持C++11标准的编译器,您可以使用emplace_back,如下所示:

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);

但使用C++11更容易的是,只需在大括号初始值设定项中列出所有数据:

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}
};

如果合适的话,添加const也很容易。


在C++03中,你可以这样做:

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 );

如果您可以使用C++11,那么您可以使用初始值设定项列表:

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},
};