c++ - 如何立即在 vector 中插入 vector ?

标签 c++ vector stl

我有一个 vector ,其元素类型为 vector<int> ,我想像这样快速插入元素:

triangles.push_back(vector<int>(som1, som2, som3))

但是它不起作用,vector<int> 没有构造函数匹配参数列表。

有没有快速的方法,还是我必须创建一个临时的 vector<int>变量,推回som1 som 2和som3,最后推回三角形的临时变量 ?

最佳答案

如果您不能使用 C++11 初始化列表,那么一切都不会丢失。鉴于您的 vector 被命名为 triangles,我将假设每个子 vector 将始终恰好包含三个 int。如果是这种情况,您可以使用辅助函数:

std::vector<int> MakeTriangle(int a, int b, int c)
{
   std::vector<int> triangle(3);
   triangle[0] = a;
   triangle[1] = b;
   triangle[2] = c;
   return triangle;
}

void f()
{
   std::vector<std::vector<int>> triangles;
   triangles.push_back(MakeTriangle(1, 2, 3));
}

对于更一般的问题,您可以编写一组采用各种数量参数的 MakeVector() 函数模板,直到某个合理的限制(同样,如果您没有 C++ 11).

如果您的项目中有 boost,您还可以使用 boost::assign。但我不会为了解决这个问题而拖入整个 boost 库。

关于c++ - 如何立即在 vector 中插入 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24127672/

相关文章:

c++ - 通过比较字符串值从 C++ 中的链接列表中删除节点

c++ - 当 int 不是 int (intX_t)

c++ - 我应该清理 ivar C++ vector ...吗?

c++ - 带文件路径的 std::string 到 str::string.c_str() 转换中的有趣问题

c++ - vector<string>::iterator - 如何找到元素的位置

c++ - GtkOverlay 不通过输入事件

c++ - 返回 'const' 或非常量引用之间的区别

c++ - 将任意模板化 vector 作为函数参数传递 C++

c++ - OpenMP parallel for with vector of vectors

c++ - 使用函数指针自动填充 std::map