c++ - 有没有办法在 for 循环中将多个变量 push_back 到一个 vector 中?

标签 c++ vector push-back

例如使用保持变量推回 书籍(书名、作者、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++ - 有没有办法在 for 循环中将多个变量 push_back 到一个 vector 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23159514/

相关文章:

c++ - 如何正确重载具有嵌套私有(private)类集合的类的运算符<<?

python - 如何将嵌套字典与 .map 用于 Pandas 系列? pd.Series([]).map

matlab - 如何在 Matlab 中沿对角线重复一个向量

c++ - 使用 push_back 和 getline 时如何减少临时对象?

c++ - 内存错误 : free(): invalid next size (fast)

c++ - OpenGL glMultiDrawElements 在索引偏移 vector 上崩溃

c++ - 从 C 数组(主要列)转换为 Armadillo 矩阵(arma::mat)而不复制

c++ - 调用 std::unique_ptr 指向的底层对象的operator()

c++ - STL 中的 vector 与列表

c++ - 在字符串 vector 上使用 push_back - C++