将2个项目插入向量中

时间:2016-04-22 16:09:16

标签: c++

我试图在向量中插入2个项目,但我无法理解这行代码:

vector<pair<vertex *, double> > vec;

有人可以解释这条线的含义吗?我的思维过程是我有一个包含一个名为Pair的类的向量,它接受一个名为vertex的类的指针和一个值。这如何帮助我将2个项目插入到向量中的单个单元格中?关于如何将2个项目插入向量中的单个单元格的任何其他建议都会有所帮助。

4 个答案:

答案 0 :(得分:4)

std::pair是一个类,它是C ++标准模板库(STL)的一部分。您可以按如下方式将项目推送到此向量中:

vec.push_back(std::make_pair(vert_ptr, value));

其中vert_ptr是指向vertex类型对象的指针,valuedouble变量。

此处,std::make_pair从您传递的两个参数中构造std::pair个实例。

答案 1 :(得分:1)

矢量元素是配对对象。每个对对象包含一个指向顶点和双精度的指针。

因此,如果要插入的2个项目是指向顶点和双精度的指针,则可以从这些项目创建pair并将其插入到矢量中。

pair数据类型在标准库中定义:std::pair vector数据类型在标准库中为std::vector

答案 2 :(得分:1)

这里理解的关键是你不能插入两个项目&#34;进入单个&#34;单元&#34;和您不需要

您正在尝试添加一个元素。该元素恰好是std::pair类型。 std::pair本身包装了两个对象。

一旦你理解了这一点,你就会意识到你只需处理std::pair,就像处理任何其他向量元素类型一样,并且你在笑。

答案 3 :(得分:0)

要插入向量,请使用insert而不是push_back - insert将迭代器作为第一个参数,所以类似于;

auto first = vec.begin();
vec.insert(first+3, std::make_pair(vert_ptr, value));

会插入向量中的第3个元素(假设已经有很多元素) - 填写错误处理和其他边缘情况的空白。

注意:如果您有许多插入内容,vector可能不是最好的结构