2013-11-27 4 views
0

Я хочу сохранить тезисы векторов строки в виде 4-мерного вектора. Это было три дня, которые я ищу, и я не могу решить, использовать ли многомерный вектор, увеличить массив, массив структуры, ... Я так новичок в cpp, и они настолько запутывают.cpp многомерный вектор

vector <string>ID; 
vector <string> firstName; 
vector <string> lastName; 
vector <string> address; 
vector<vector<vector<vector<string> >>> person ; 

Что мне делать с населением?

+12

насчет 'класса человека {/*...*/};' – hansmaad

+2

мульти-размерный вектор A требуется, если, например, у вас есть несколько первых имен для id и нескольких последних имен для имени и нескольких адресов для каждого последнего имени. Если вы просто хотите сохранить данные о человеке, то предложение @ hansmaad наиболее подходит. –

+0

Хорошо ... так какая проблема? Вы хотите, чтобы мы определились с вами, какую структуру данных вы должны использовать? – Spook

ответ

1

В вашем случае нет смысла создавать многомерный массив. Я предпочел бы попробовать:

class Person 
{ 
public: 
    string Id; 
    string firstName; 
    string lastName; 
    string address; 
}; 

(...) 

vector<Person> People; 

// Adding 
Person p; 
p.Id = "1234"; 
People.push_back(p); 

// Count 
std::cout << "Currently you have " << People.size() << " people in the database"; 

// Access 
Person p1 = People[0]; 

Edit: В ответ на замечания

Это довольно сложно ответить на этот вопрос без каких-либо особенностей о вашей проблеме. Из того, что мало я знаю об этом, я, вероятно, перейду к версии с несколькими классами:

class Id 
{ 
public: 
    int Value; 
    std::vector<FirstName> Names; 
} 

class FirstName 
{ 
public: 
    string Value; 
    std::vector<SecondName> SecondNames; 
} 

class SecondName 
{ 
public: 
    string Value; 
    std::vector<Address> Addresses; 
} 

class Address 
{ 
public: 
    string Value; 
} 
+0

У меня есть несколько lastnames – user1876128

+0

@ user1876128 Вы имеете в виду, что у одного человека может быть несколько последних имен? – Spook

+0

yes Я просто упростил вопрос в реальном случае, мои переменные разные и могут иметь разные значения – user1876128

0

Структура массивов может быть! Или для более читаемого и изменяемого кода использовать класс

2

Как было предложено @hansmaad

Потенциальными будет проще и лучше реализацией следующего (по сравнению с мульчей-мерные векторами) для хранения личных данных в вашей программе.

Определение человека как:

struct person { 
    std::string id; 
    std::string first_name; 
    std::string last_name; 
    std::string address; 
}; 

и определить свой vector как:

std::vector<person> people; 
Смежные вопросы