c++ - What is the uses of using a pointer in this specific scenario? -
in scenario, have struct data declared.
struct data { string first; string middle; string last; int age; };
according notes, create
vector<data*> list;
to add items list, have create new data pointer , set attributes manually.
data* variable; variable=new data; list.pushback<variable>
i not see merits of using approach. why can't use this?
vector<data> list;
to add items list, create new data variable, use list.pushback<variable>;
am right both approaches works?
first of has be
list.push_back(variable)
instead of
list.pushback<variable>
the difference in case 1 create pointer variable, means store adress of variable in list. code
#include <string> #include <vector> #include <iostream> using namespace std; struct data { string first; string middle; string last; int age; }; int main() { vector<data*> list; data* variable; variable = new data; list.push_back(variable); cout << list[0]; cin.get(); return 0; }
would return address of place in memory variable stored. return value of variable use like
vector<data*> list; data* variable; variable = new data; variable->setage(5); list.push_back(variable); cout << (*list[0]).getage(); cin.get(); return 0; }
where *list[0] dereferences pointers, means value , not adress of it.
if work without pointers instead
vector<data> list; data variable; list.push_back(variable);
instead, store copy of variable in list.
so in case directly address variable like
list[0].getage()
if create getage() function in struct data.
if don't know how so, easy( maybe not best) way add
public: int getage(){ return age; } void setage(int x){ age = x; } };
in struct data.
Comments
Post a Comment