C++ 如何在C++;?
我试图创建一个空的Contact类对象数组。从一个空数组开始,我想在AddrBook.cpp中创建一个函数,将联系人对象添加到对象数组中,称为addressBook 我是否在AddrBook.h中正确初始化了数组 如何检查特定索引中是否存在联系人对象C++ 如何在C++;?,c++,arrays,object,initialization,C++,Arrays,Object,Initialization,我试图创建一个空的Contact类对象数组。从一个空数组开始,我想在AddrBook.cpp中创建一个函数,将联系人对象添加到对象数组中,称为addressBook 我是否在AddrBook.h中正确初始化了数组 如何检查特定索引中是否存在联系人对象 AddrBook.cpp #include "AddrBook.h" namespace address_book_test { const int CAPACITY = 5; void AddrBook::addContac
AddrBook.cpp
#include "AddrBook.h"
namespace address_book_test
{
const int CAPACITY = 5;
void AddrBook::addContact(Contact& itemToAdd) // Add Contact to the AddrBook (using Contact object)
{
for (int i = 0; i < CAPACITY; i++)
{
if (/*Contact object does not exist at i*/)
{
/*Add Contact object*/
return;
}
}
return;
}
...
}
#包括“AddrBook.h”
名称空间地址\u书籍\u测试
{
常数int容量=5;
void AddrBook::addContact(Contact&itemToAdd)//将联系人添加到AddrBook(使用Contact对象)
{
对于(int i=0;i
AddrBook.h
#ifndef ADDR_BOOK_H
#define ADDR_BOOK_H
#include <fstream>
using namespace std;
#include "Contact.h"
namespace address_book_test
{
class AddrBook
{
public:
static const int CAPACITY = 5;
// CONSTRUCTOR
AddrBook() { used = 0; }
// Modification Member Functions
void addContact(Contact& itemToAdd); // Add Contact to the AddrBook (using Contact object)
...
private:
static Contact addressBook[CAPACITY]; // The array used to store Contact objects
int used; // How much of addressBook is used
};
}
#endif
\ifndef ADDR\u BOOK\H
#定义地址簿
#包括
使用名称空间std;
#包括“Contact.h”
名称空间地址\u书籍\u测试
{
类AddrBook
{
公众:
静态常数int容量=5;
//建造师
AddrBook(){used=0;}
//修改成员函数
void addContact(Contact&itemtoad);//将Contact添加到AddrBook(使用Contact对象)
...
私人:
静态联系人通讯簿[容量];//用于存储联系人对象的数组
int used;//使用了多少地址簿
};
}
#恩迪夫
Contact.cpp
#ifndef CONTACT_H
#define CONTACT_H
#include <fstream>
using namespace std;
#include "Address.h"
#include "Name.h"
namespace address_book_test
{
class Contact
{
public:
// Constructor
Contact(string inLastName = "",
string inFirstName = "",
string inStreetAddress = "",
string inCity = "",
string inState = "",
string inZip = "",
string inPhone = "",
string inEmail = "",
string inBirthday = "",
string inPictureFile = "")
{
Name(inLastName, inFirstName);
Address(inStreetAddress, inCity, inState, inZip);
setPhone(inPhone);
setEmail(inEmail);
setBirthday(inBirthday);
setPictureFile(inPictureFile);
}
...
private:
Name fullName;
Address fullAddress;
string phone;
string email;
string birthday;
string pictureFile;
};
}
#endif
#如果没有联系#
#定义联系人
#包括
使用名称空间std;
#包括“Address.h”
#包括“Name.h”
名称空间地址\u书籍\u测试
{
班级联系
{
公众:
//建造师
联系人(字符串inLastName=“”,
字符串inFirstName=“”,
字符串inStreetAddress=“”,
字符串inCity=“”,
字符串inState=“”,
字符串inZip=“”,
字符串inPhone=“”,
字符串inEmail=“”,
字符串inBirthday=“”,
字符串inPictureFile=“”)
{
名称(inLastName,inFirstName);
地址(inStreetAddress、inCity、inState、inZip);
固定电话;
setEmail(inEmail);
受挫日(出生日);
setPictureFile(输入图片文件);
}
...
私人:
全名;
地址完整地址;
字符串电话;
字符串电子邮件;
弦乐生日;
字符串图片文件;
};
}
#恩迪夫
不要使用数组,请使用:
std::vector<Contact> addressBook;
你真的需要把它定义为静态的吗
对于vector,您不需要变量“used”。如果你想知道你有多少联系人,你只需要写一封信
addressBook.size();
现在,如果要查找特定联系人,可以使用“查找”:
if(find(addressBook.begin(), addressBook.end(), my_contact) != addressBook.end()){
...
}
您有一个名为“used”的变量,所以我猜您想使用这个变量来跟踪数组中已填充的位置,然后您只需在填充数组中的另一个空间时增加该变量,然后您就可以通过执行以下操作来检查该点是否已被使用:if(I>=used){
你只需要记住数组从索引0开始,填充时使用的变量是1,因此它总是比上次填充的索引高一个。如果你想减少应用程序的内存占用,你可以在第一次向地址簿添加元素时使用call_初始化向量
std::vector<Contact> addressBook;
void AddContact(string Contact) {
std::call_once(onceFlag, [this] { this->addressBook.reserve(1000); cout << "size Reserved" << endl; });
addressBook.push_back(Contact);
}
std::向量地址簿;
void AddContact(字符串触点){
std::call_一次(onceFlag,[this]{this->addressBook.reserve(1000);数组不能有固定的大小。不能有空数组。它始终具有确切的容量
元素数。如果需要更改大小,请使用std::vector
。在i
位置已经存在一个对象。唯一可以做的是用副本覆盖它。
std::vector<Contact> addressBook;
void AddContact(string Contact) {
std::call_once(onceFlag, [this] { this->addressBook.reserve(1000); cout << "size Reserved" << endl; });
addressBook.push_back(Contact);
}