【问题标题】:Access parts of Constructor that is in a vector访问向量中的构造函数部分
【发布时间】:2013-11-10 01:45:19
【问题描述】:

假设我有一个类型的向量,其中包含一个 int 和 2 个字符串。 从我的自定义类型的向量中提取整数或字符串的最佳方法是什么,以便我可以将它们与其他对象进行比较?

我尝试将一个向量推回另一个 STL 类型,但我知道

vector<sometype> v;
vector<string> v2;
for(int i = 0; i<v.size(); ++i;)
{
    v2.push_back(v[i]);
}

行不通,我真的不知道该怎么做。

【问题讨论】:

  • v2.push_back(v[i].stringField1) 会起作用,但我严重怀疑它是否解决了这个 XY 问题中的真正 X。
  • 您应该实现operator == 的重载。这样调用者就不必手动提取数据成员。向我们展示您的类的外观以及您希望如何比较此类对象的示例。

标签: c++ class vector constructor


【解决方案1】:

由于您没有提供某种类型的代码,我自己编写了示例代码。

class sometype {
  int a;
  std::string b;
  std::string c;

public:    
  friend bool operator==(const sometype& lhs, const sometype& rhs);
};

bool operator==(const sometype& lhs, const sometype& rhs) {
  if (lhs.a == rhs.a &&
      lhs.b.compare(rhs.b) == 0 &&
      lhs.c.compare(rhs.c) == 0) {

    return true;
  }

  return false;
}

【讨论】:

  • 这让我走上了正确的思路,并且我设法创建了另一个适合我的目的的课程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多