2016-04-22 34 views
0

我试图插入2项为载体,我无法理解这行代码:插入2项为载体

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

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

+0

你有一个名为'Pair'的类包含两个对象,你可以将它推入一个向量。这如何帮助你将两个对象推入矢量?你究竟知道什么? – user463035818

+0

@NathanOliver对不起,我的意思是插入2个项目到一个单元格 – Bthegreatest

+0

什么是“单元格”? – Soren

回答

4

A std::pair是一个类,它是C++的标准模板库(STL)的一部分。你可以把一个项到该载体如下:

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

其中vert_ptr是指向vertex类型和value的一个目的是double变量。

在这里,std::make_pair从您传递它的两个参数构造一个std::pair实例。

1

您的矢量元素是配对对象。每个对象都包含一个指向顶点和双精度的指针。所以,如果你想要插入的2个项目是一个指向顶点和双精度的指针,你可以从这些中创建一个pair并将它插入到你的向量中。

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

0

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

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

会插入在载体中的第三元件(假设是,许多的话) - 填空进行错误处理和其它边缘情况。

注意:vector可能不是,如果你有很多插入

1

的理解这里的关键部分是,你不能插入“两个项目”成一个单一的“细胞”用最好的结构,你不需要

您正在尝试添加一个元素。该元素恰巧属于std::pair类型。 A std::pair本身包装两个对象。

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

+1

有趣的“两个插入”的位置 - 我没有考虑过:-) – Soren

+1

因此,从某种意义上说'pair'被认为是一个'对象'包含2个项目是否正确?从某种意义上说,你是将'对象'插入到矢量中的? – Bthegreatest

+1

@Bthegreatest 100%。这正是你在做的。 'std :: pair '也是一个类。 :) –