一个简单的电话簿程序将联系人推回到向量中

时间:2018-02-23 10:32:24

标签: c++ vector push-back

我正在用c ++编写一个简单的电话本程序而不是使用类。 我有一个添加联系人的功能。我想知道为什么它不起作用!它不会将联系人推回向量中,如果你能帮助我,我将非常感激。我的代码是和平的。

    vector<ContactInfo> add(vector<ContactInfo> contacts, ContactInfo ci){
if(!(isRepetativeContact(contacts, ci)))
    contacts.push_back(ci);
return contacts;
}

这里是“isRepetativeContact”函数:

    bool isRepetativeContact(const vector<ContactInfo>& contacts, const ContactInfo& ci){
for(int i = 0 ; i < contacts.size() ; i++)
    if((contacts.size() != 0) && (contacts[i] == ci))
        return true;
return false;

}

我重载了ContactInfo结构的==运算符:

    bool operator==(const ContactInfo& ci) const {
    return (firstName == ci.firstName && lastName == ci.lastName &&
     phoneNumber == ci.phoneNumber && emailAddress == ci.emailAddress &&
     id == ci.id );
}

1 个答案:

答案 0 :(得分:2)

好像你正在使用std :: vector重新创建一个std :: set。 尝试使用std :: set

std::pair<iterator,bool> insert( const value_type& value );

insert的返回值是一对。 bool指示值是否已经在集合中; (插入成功)。迭代器指向std :: set中的元素(如果值已经在集合中,它指向现有值)

你不能在一组中有重复项。