позволяет сказать, что ваша структура выглядит следующим образом:
struct myStruct{
//random variables that your struct may contain
int num;
std::string str;
char ch;
//Default Constructor
//This allows your to create your structs without specifying any values;
myStruct():
num{999},str{"default"},ch{'z'}{}
//Parameterized Constructor
//This allows you to create your structs with specified values during initialization
myStruct(int const numIn, std::string const& strIn, char const chIn):
num{numIn},str{strIn},ch{chIn}{}
};
это позволит вам создавать экземпляры следующим образом:
//calling default constructor
myStruct part1, part2, part3;
//calling parameterized constructor
myStruct part4{4,"4",'4'}, part5{5,"5",'5'}, part6{6,"6",'6'};
Теперь вы хотите поместить каждый в контейнер, а затем положить эти контейнеры в другой контейнер?
//this is a vector holding one deque holding 6 structs
vector<deque<myStruct>> vec{{part1,part2,part3,part4,part5,part6}};
+-------+
| vec |
| |
| [0] |
+-------+
|
\'/
+-------+
| deq |
| |-> part1
| [0] |
+-------+
| deq |
| |-> part2
| [1] |
+-------+
| deq |
| |-> part3
| [2] |
+-------+
| deq |
| |-> part4
| [3] |
+-------+
| deq |
| |-> part5
| [4] |
+-------+
| deq |
| |-> part6
| [5] |
+-------+
//this is a vector holding 6 deques each holding 1 struct
vector<deque<myStruct>> vec2{{part1},{part2},{part3},{part4},{part5},{part6}};
+-------++-------++-------++-------++-------++-------+
| vec || vec || vec || vec || vec || vec |
| || || || || || |
| [0] || [1] || [2] || [3] || [4] || [5] |
+-------++-------++-------++-------++-------++-------+
| | | | | |
\'/ \'/ \'/ \'/ \'/ \'/
+-------++-------++-------++-------++-------++-------+
| deq || deq || deq || deq || deq || deq |
| || || || || || |
| [0] || [0] || [0] || [0] || [0] || [0] |
+-------++-------++-------++-------++-------++-------+
| | | | | |
\'/ \'/ \'/ \'/ \'/ \'/
part1 part2 part3 part4 part5 part6
Мы можем сделать что-то еще лучше. Давайте инициализируем ваши структуры, нажимая их в deque, одновременно нажимая deque (s) в вектор.
//this is a vector holding one deque holding 6 structs
vector<deque<myStruct>> vec{{{1,"1",'1'},{2,"2",'2'},{3,"3",'3'},{4,"4",'4'},{5,"5",'5'},{6,"6",'6'}}};
//this is a vector holding 6 deques each holding 1 struct
vector<deque<myStruct>> vec2{{{1,"1",'1'}},{{2,"2",'2'}},{{3,"3",'3'}},{{4,"4",'4'}},{{5,"5",'5'}},{{6,"6",'6'}}};
Имейте в виду, однако, это все возможности инициализации C++ 11. Я рекомендую вам прочитать эту статью, чтобы привыкнуть. http://www.informit.com/articles/article.aspx?p=1852519
Для компиляции кода, подобного этому, убедитесь, что ваш компилятор является актуальным, и у вас есть соответствующие файлы библиотеки. Если вы используете GCC, компилировать с этим флагом:
г ++ -std = C++ 0x -o главный main.cpp
@EricBanderhide, Обратите внимание, что очереди получают по умолчанию построены как в ваш пример. – chris
Я не понимаю, как это получается? Я действительно зря? Где это имя переменных? Является ли пример настолько кратким, что не достаточно полезен для новичка, подобного мне? –
@ EricBanderhide, к очередям можно получить доступ через 'myVector [index]' или 'myVector.at (index)' (последний имеет проверку вне пределов). Векторы похожи на массивы, с некоторыми дополнительными функциями и некоторыми дополнительными функциями, чтобы их вписаться. – chris