c++ - 一个简单的电话簿程序将联系人推回到 vector 中

标签 c++ vector push-back

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

    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 );
}

最佳答案

您似乎正在使用 std::vector 重新创建 std::set。 尝试使用 std::set

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

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

集合中不能有重复项。

关于c++ - 一个简单的电话簿程序将联系人推回到 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48945779/

相关文章:

c++ - 在 main() 的线程中调用对象成员函数

c++ - 为什么我可以有一个 std::vector<std::ofstream*> 但不能有一个 std::vector<std::ofstream> ?

Android 致命信号 7 (SIGBUS),代码 1,故障地址 0xb8509ce1 in tid 32190 (com.example)

c++ - 使用 "find"访问 vector 中的值

c++ - 如何保存这个 vector 图

c++ - 在函数类中使用 push_back 更新指针 vector 的大小

c++ - 是否有利用 move 的 back_inserter 变体?

c++ - 在 mbstowcs_s 函数 SizeInWords 参数的上下文中,Word 的大小是多少?

c++ - 无锁实现中没有互斥锁的条件变量

c++ - 调用外部访问器函数时出错