std::sort(vector2->begin(), vector2->end(), [](const Type& a, const Type& b) {return a.length > b.length; });
for (int i = 0; i < vector2->size(); i++)
std::cout << vector2->at(i).length << " ";
float length = 3600.0, currentlength = 0.0f;
std::vector<Type> *vec = new std::vector<Type>();
srand(time(0));
AddMusic(vector3, vec, currentlength, length);
std::cout <<"vec: "<< std::endl;
for (int i = 0; i < vec->size(); i++)
std::cout << vec->at(i).length << " ";
std::cout << std::endl << "cl:" << currentlength << std::endl;
std::sort(vector3->begin(), vector3->end(), [](const Type& a, const Type& b) {return a.length > b.length; });
for (int i = 0; i < vector3->size(); i++)
std::cout << vector3->at(i).length << " ";
length = 2.5 * 3600.0;
AddTalk(vector3, vec, currentlength, length);
AddMusic(vector3, vec, currentlength, length);
std::cout << "vec: " << std::endl;
for (int i = 0; i < vec->size(); i++)
std::cout << vec->at(i).length << " ";
std::cout << std::endl << "cl:" << currentlength << std::endl;
length = 10800.0;
//
AddTalk(vector3, vec, currentlength, length);
//
AddMusic(vector3, vec, currentlength, length);
std::cout << "vec: " << std::endl;
for (int i = 0; i < vec->size(); i++)
std::cout << vec->at(i).length << " ";
std::cout << std::endl << "cl:" << currentlength << std::endl;
//vector->clear();
//vectortalk->clear();
std::cin.get();
return 0;
}
void AddTalk(std::vector<Type> *src,std::vector<Type> *dst, float ¤tlength,float maxlength)
{
int num;
bool b = false;
for (int i = 0; i < 1; i++)
{
num = Random(src);
if (src->at(num).length + currentlength <= maxlength)
{
b = true;
dst->push_back(src->at(num));
currentlength += dst->back().length;
}
if (!b)
AddTalk(src, dst, currentlength, maxlength);
}
}
void AddMusic(std::vector<Type> *src, std::vector<Type> *dst, float ¤tlength, float maxlength)
{
int num;
for (int i = 0; i < 10; i++)
{
num = Random(src);
if (src->at(num).length + currentlength <= maxlength)
{
dst->push_back(src->at(num));
currentlength += dst->back().length;
}
}
for (int i = 0; i < src->size(); i++)
{
if (src->at(i).length + currentlength <= maxlength)
{
dst->push_back(src->at(i));
currentlength += dst->back().length;
}
}
}