gpt4 book ai didi

c++ - 如何在不推送的情况下创建 vector 或类似的?

转载 作者:行者123 更新时间:2023-11-30 00:51:14 26 4
gpt4 key购买 nike

我需要创建一个 vector<vector<string>>并且对于每个 vector<string>vector我需要在里面有几个字符,比如 new vector<string>("a","A","á"); .

但我不想push_back每个角色。有没有办法像我在那里那样做?

最佳答案

C++11

std::vector 有一个 insert 成员函数,它在 C++11< 中接受一个 std::initializer_list/strong>,以及一个也接受 std::initializer_list 的构造函数。

考虑到这一点,我们可以轻松编写插入多个元素的代码,而无需单独的 push_backs,也不必手动构造插入函数可以迭代的临时容器。


// construct `multi_vec` and initialize it with one std::vector<std::string>,
// having the elements "hello", "stackoverflow", and "world"

std::vector<std::vector<std::string>> multi_vec {
{ "hello", "stackoverflow", "world" }
};

// resize, to add another (empty) std::vector<std::string> to `multi_vec`

multi_vec.resize (2);

// insert some elements to `multi_vec[1]`

multi_vec[1].insert (multi_vec[1].end (), { "foo", "bar", "baz", "caz" });

multi_vec[0] -> { "hello", "stackoverflow", "world" } 
multi_vec[1] -> { "foo", "bar", "baz", "caz" }

注意: std::vector 的相关insert member-function 的第一个参数> 接受一个迭代器,该迭代器指定应在其后插入新元素的元素,传递 our_vec.end () 会将我们的元素附加到列表的末尾。



C++03

如果不写C++11而是使用C++03,事情必须以更丑陋的方式完成,下面是一个简单的结果与上一节中的示例相同的示例。

char const * init_array_1[] = { "hello", "stackoverflow", "world" };
char const * init_array_2[] = { "foo", "bar", "baz", "caz" };

std::vector<std::vector<std::string> > multi_vec;

multi_vec.push_back (std::vector<std::string> (init_array_1, init_array_1 + 3));
multi_vec.push_back (std::vector<std::string> (init_array_2, init_array_2 + 4));

关于c++ - 如何在不推送的情况下创建 vector<string> 或类似的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22713787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com