如果向量定义了结构类型,如何检查结构的成员是否为空?

时间:2016-12-14 08:06:54

标签: c++ c++11

struct A { int rollno; int emplyno; }; 

int main()
{
   vector<A> obj;
   obj.push_back({10,112});
   if (obj.rollno == 0) // error
   {
      cout << "rollno is empty"<<endl;
   }
}

2 个答案:

答案 0 :(得分:1)

您需要访问向量中的结构。您可以通过索引执行此操作:

if ((obj.size() > 0) && (obj[0].rollno == 0))
{
    std::cout  << "rollno is empty" << std::endl;
}

如果需要检查向量中的A的所有实例,可以使用循环:

for (const A &a : obj)
{
    if (a.rollno == 0)
    {
        std::cout << "Employee '" << a.emplyno << "' has an empty rollno" << std::endl;
    }
}

答案 1 :(得分:0)

向量不是A的实例。它没有成员rollno。因此,评论的界限不合适。

相反,向量是一个容器,它包含A的一系列实例。在我看来,你希望访问向量的第一个(也是唯一的)元素。从vector的文档中可以看出,您可以使用front成员函数访问第一个元素。