#include <initializer_list>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <utility>
#include<cstring>
#include<string>
using namespace std;
class TListNode{
public:
string Dat;
TListNode * Fnext;
TListNode * Fprev;
TListNode():Fnext(nullptr),Fprev(nullptr){}
TListNode * & Next(){return Fnext;}
TListNode * & Prev(){return Fprev;}
string & Get() {return Dat;}
};
class TList{
public:
TListNode * Fbegin;
TListNode * Fend;
int NomerFaila;
int FnodeCount;
std::initializer_list<string> list;
TList():Fbegin(0),Fend(0), FnodeCount(0) {};
TList(const std::initializer_list<string> & list);
TListNode * push_back(const string & dat);
TListNode * Begin(){return Fbegin;}
TListNode * End(){return Fend;}
int NodesCount(){return FnodeCount;}
};
TList::TList( const std::initializer_list<string>& list):TList()
{ std::for_each(list.begin(), list.end(), [this]( const string & d) {this->push_back(d); });
}
TListNode* TList:: push_back(const string & dat)
{ TListNode* node = new TListNode;
node->Get() = dat; node->Next() = 0;
if ( Fend ) Fend->Next() = node;
node->Prev()= Fend;
Fend = node; FnodeCount++;
if (!Fbegin) Fbegin = node;
return node;
}
struct My_String {
string S;
int Nomer;
};
using namespace std;
vector <TList> vect;
vector <My_String> vect2;
void Print( TList & list)
{ TListNode * node = list.Begin();
while (node != nullptr)
{
cout << node->Get();
cout << list.NomerFaila<<endl;
node = node->Next();
}
}
void Print_V(vector <TList> &V) {
//for (vector<TList>::iterator it = V.begin(); it != V.end(); it++) {
for (int i=0;i<V.size();i++) {
Print(V[i]);
}
//}
}
void Print_V22(vector <My_String> &V22) {
for (vector<My_String>::iterator it = V22.begin(); it != V22.end(); it++) {
//for (int i=0;i<V22.size();i++) {
cout<<it->S<<it->Nomer;
}
//}
}
void Convert ( TList & list, My_String &Str)
{ TListNode * node = list.Begin();
while (node != nullptr)
{
Str.S = node->Get();
Str.Nomer = list.NomerFaila;
vect2.push_back(Str);
node = node->Next();
}
}
void Sortirovka ( vector <My_String> &V222)
{
for (vector<My_String>::iterator it = V222.begin(); it != V222.end(); it++)
{
if (strcmp ( (it->S), "1")==0) {
for (vector<My_String>::iterator it2 = it+1; it2 != V222.end() ; it2++)
{
V222[1]=V222[2];
V222.pop_back();
}
}
}
}
int main()
{
setlocale(LC_ALL, "Russian");
TList L {"1","2","3"};
L.NomerFaila=1;
//Print (L);
TList LL {"4","5","2"};
LL.NomerFaila=2;
vector <TList> vect;
vect.push_back(L);
vect.push_back(LL);
//Print_V (vect);
My_String Struct;
Convert ( L, Struct);
Print_V22(vect2);
/*
TListNode * node = LL.Begin();
while (node != nullptr)
{
Struct.S=node->Get();
vect2.push_back(Struct.S);
}
*/
system("pause");
return 0;
}