我试图插入2项为载体,我无法理解这行代码:插入2项为载体
vector<pair<vertex *, double> > vec;
有人能解释此行的意义?我的思考过程是我有一个向量,其中包含一个名为Pair
的类,它接受一个名为vertex
的类的指针和一个值。这如何帮助我将2个项目插入矢量中的单个单元格中?关于如何将2个项目插入向量中的单个单元格的任何其他建议将会有所帮助。
我试图插入2项为载体,我无法理解这行代码:插入2项为载体
vector<pair<vertex *, double> > vec;
有人能解释此行的意义?我的思考过程是我有一个向量,其中包含一个名为Pair
的类,它接受一个名为vertex
的类的指针和一个值。这如何帮助我将2个项目插入矢量中的单个单元格中?关于如何将2个项目插入向量中的单个单元格的任何其他建议将会有所帮助。
A std::pair
是一个类,它是C++的标准模板库(STL)的一部分。你可以把一个项到该载体如下:
vec.push_back(std::make_pair(vert_ptr, value));
其中vert_ptr
是指向vertex
类型和value
的一个目的是double
变量。
在这里,std::make_pair
从您传递它的两个参数构造一个std::pair
实例。
您的矢量元素是配对对象。每个对象都包含一个指向顶点和双精度的指针。所以,如果你想要插入的2个项目是一个指向顶点和双精度的指针,你可以从这些中创建一个pair
并将它插入到你的向量中。
pair
数据类型在标准库中定义:std::pair
vector
数据类型在标准库中为std::vector
。
要插入到一个向量中,请使用insert
而不是push_back
- insert将迭代器作为第一个参数,因此类似于;
auto first = vec.begin();
vec.insert(first+3, std::make_pair(vert_ptr, value));
会插入在载体中的第三元件(假设是,许多的话) - 填空进行错误处理和其它边缘情况。
注意:vector
可能不是,如果你有很多插入
的理解这里的关键部分是,你不能插入“两个项目”成一个单一的“细胞”用最好的结构,你不需要。
您正在尝试添加一个元素。该元素恰巧属于std::pair
类型。 A std::pair
本身包装两个对象。
一旦你了解了这一点,你就会意识到你只是像处理任何其他矢量元素类型一样处理std::pair
,而你在笑。
有趣的“两个插入”的位置 - 我没有考虑过:-) – Soren
因此,从某种意义上说'pair'被认为是一个'对象'包含2个项目是否正确?从某种意义上说,你是将'对象'插入到矢量中的? – Bthegreatest
@Bthegreatest 100%。这正是你在做的。 'std :: pair
你有一个名为'Pair'的类包含两个对象,你可以将它推入一个向量。这如何帮助你将两个对象推入矢量?你究竟知道什么? – user463035818
@NathanOliver对不起,我的意思是插入2个项目到一个单元格 – Bthegreatest
什么是“单元格”? – Soren