C++ push_back() 一个结构体到一个向量中
c++ push_back() a struct into a vector
我有一个包含坐标和WayIds的大文件。我将其存储在具有以下结构的向量中:
struct SOne
{
double y, x, wayId;
};
该文件如下所示:
52.8774, 6.7442, 777
52.8550, 6.7449, 777
52.8496, 6.7449, 776
在我的程序中,我已经过滤了我想继续使用的WayIds,并存储在名为"way"的向量中。使用 for 循环,我可以找到坐标,但我不知道如何将它们存储在带有结构的向量中。
vector<SOne> MyWays;
for (int i = 0; i < Data.size(); i++) { // Data -> my file with all coordinates and wayIds
for (size_t j = 0; j < way.size(); j++){
if (Data[i].WayId == way[j]) // way[j] -> here i get the WayId i like to work with
{
} // if
} // for
} // for
我试图点击这个链接:push_back(( 一个结构到一个向量中 但它对我不起作用。 谁能给我一个提示? 提前致谢
- 构造
SOne
. - 填充对象。
-
插入
MyWays
.SOne sOneObj; sOneObj.x = Data[i].X; sOneObj.y = Data[i].Y; sOneObj.wayId = Data[i].WayId; // = way[j] MyWays.push_back(sOneObj);
您可以使用std::vector::emplace_back
从Data
向量中插入元素,假设它也具有x,y。
struct SOne
{
SOne( double y_in, double x_in, double wayId_in ):
y(y_in), x(x_in), wayId(wayId_in)
{ }
~SOne() { }
SOne& SOne=(const SOne& other) = default;
SOne( const SOne& other ) =default;
double y, x, wayId;
};
// Inside the if check simply do :
MyWays.emplace_back( Data[i].X, Data[i].Y, Data[i].WayId ) ;
您的结构应该已经有一个默认的复制构造函数来完成这项工作,因此您只需使用MyWays.push_back(SOne(Data[i]));
而无需更改代码的其他部分
派对有点晚了,但我可能会插入这样的数据:
MyWays.push_back({Data[i].X, Data[i].Y, Data[i].WayId});
这应该调用 push_back(( 的移动变体,它减少了复制。 另外,我可能会为 WayId 使用整数,但这更多的是偏好问题。
相关文章:
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为什么一个向量上的多线程操作很慢
- 将一个向量插入另一个向量的某个位置
- 将指向给定子类的指针从一个向量复制到另一个向量
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何在不复制的情况下将一个向量移动到另一个向量中
- 使用 std::transform 将向量向量 (a) 添加到另一个向量向量 (b)
- 如何按另一个向量的方向调整一个向量?
- 将字符向量复制到另一个向量
- 制作一对共享指针并推送一个向量
- 你能把一个向量<int64>投射到一个向量<uint8>吗
- 大家好,当一个类有一个向量作为它的数据成员时,为什么它的大小总是24?
- 为什么我们需要在优先级队列声明中添加一个向量作为参数?
- 如何将所有指针从一个向量移动到另一个向量?
- 将一个向量映射到不同的对,即使向量映射到每对时是不同的?
- 生成一个类Name_class并将两种数据类型存储在一个向量中
- 使用步骤c++构建一个向量
- 如何从另一个向量中的另一个第一元素减去向量中的第一元素
- 将一个向量对放在一个无序映射与一个映射中