我没有真正得到模板 std::vector 的字段,第一个指定类型,例如一个类,但我没有得到分配器、指针和引用变量。
我将提供一个简单的示例,我想使用类 person 的向量,所以我必须对模板向量说:嘿,存储一些person的,但我还必须告诉向量如何分配该类。(1) 该示例的正确语法如何?
一些代码开始:
旁注,在人的构造函数中,c(2)我应该使用日期*吗?
class date
{
public:
int m_nMonth;
int m_nDay;
int m_nYear;
int getMonth(return m_nMonth;)
int getDay(return m_nDay;)
int getYear(return m_nYear;)
void setDate(int month, int day, int year)
{
m_nMonth=month;
m_nDay=day;
m_nYear=year;
}
date()
{
setDate(0,0,0);
}
date(int month, int day, int year)
{
setDate(month,day,year);
}
void printDate()
{
printf("%d/%d/%d", m_nMonth, m_nDay, m_nYear);
}
}
class person
{
public:
int m_nID;
char m_sName[128];
char m_sSurname[128];
date m_cBirthDay;
void setName(const char* name)
{
strncpy(m_sName, name, 127);
m_sName[127]= '\0';
}
void setSurname(const char* surname)
{
strncpy(m_sSurname, surname, 127);
m_sName[127]= '\0';
}
void setBirthDay(date* bday);
{
m_cBirthDay.date(bday.getMonth(), bday.getDay(), bday.getYear)
}
person(int id, const char* name, const char* surname, date bday)/*should it be date* bday? why?*/
{
m_nID=id;
setName(name);
setSurname(surname);
setBirthDay(bday);
}
}
我想您必须在类人中声明一个函数,称为分配器,这是您调用时作为第二个参数传递的内容,(3)如何定义分配器函数?:
vector <person*, /*some allocator call*/> ImAVector;
然后,(4)我怎么能在向量中推一些东西,(5)这行得通吗?:
person* someperson;
someperson.person(/*arguments*/);
ImAVector.push_back(someperson);
(6) 如何检索指向特定实例的指针?(7) 我可以使用迭代器来做这样的事情吗?:
//(6)
person* = ImAVector[someIterator];
//and then (7)
ImAVector[someIterator].setName(someConstCharPointer);
string* something = person.getName();
另外,(8)分配器与构造函数有什么关系吗?(9)分配类实例后立即填写类字段的常用程序?(10) 分配器可以调用构造器吗?
最后一个问题: (11) 什么是引用字段、指针字段和它们的 const 对应项?
我知道要写很多东西,但是我在过去的两天里一直在寻找示例,但没有成功,所以如果有人对这个很少讨论的话题有所了解,我会很好地列出所有问题以便于回答。
我很感激任何答案:)