1
Vývoj / Re:STL Vector ukazatelu na instance tridy a sort c++
« kdy: 16. 03. 2012, 13:06:58 »
Ono zrejme take zalezi na verzi prekladace. Ja to zkusil s g++ verze 4.6. S nim je to v poradku. Prekladac intel composer xe (sp1, 8.273) tj. icpc to neprelozi a dava stejnou chybovou hlasku jako u Vas. Staci mu ale vnutit novy standard pomoci -std=c++0x a pak to jde.
Nasledujici priklad (doplneni predchoziho) je vyzkousen v linuxu s g++ a s icpc -std=c++0x. Jaky prekladac pouzivate Vy?
P.S. miluji prenositelnost programu C/C++
S g++:
s intelem:
Nasledujici priklad (doplneni predchoziho) je vyzkousen v linuxu s g++ a s icpc -std=c++0x. Jaky prekladac pouzivate Vy?
P.S. miluji prenositelnost programu C/C++

Kód: [Vybrat]
#include <iostream>
#include <vector>
#include <algorithm>
class TZaznam
{
public:
char Zanr;
char Typ;
char Novinka;
};
using namespace std;
class TPlaylist
{
struct {
bool operator()(const TZaznam *prvni, const TZaznam *druhy ) {
return prvni->Zanr < druhy->Zanr;
};
} PorovnejZaznam;
public:
vector <TZaznam*>PoleZaznamu;
void SetridPoleZaznamu()
{
std::sort( PoleZaznamu.begin(), PoleZaznamu.end(), PorovnejZaznam);
}
};
int main() {
TPlaylist pl;
TZaznam *z;
z = new TZaznam;
z-> Zanr = 'r';
pl.PoleZaznamu.push_back(z);
z = new TZaznam;
z-> Zanr = 'p';
pl.PoleZaznamu.push_back(z);
z = new TZaznam;
z-> Zanr = 's';
pl.PoleZaznamu.push_back(z);
cout << "Puvodni playlist:" << endl;
for (int i = 0; i< pl.PoleZaznamu.size(); i++)
cout << pl.PoleZaznamu[i]->Zanr << " ";
cout << endl;
// Setridim
pl.SetridPoleZaznamu();
cout << "Setrideny playlist:" << endl;
for (int i = 0; i< pl.PoleZaznamu.size(); i++)
cout << pl.PoleZaznamu[i]->Zanr << " ";
cout << endl;
return 0;
}
S g++:
Kód: [Vybrat]
petanque:~/Vyuka/PIA/STL$ g++ sort.cpp
petanque:~/Vyuka/PIA/STL$ ./a.out
Puvodni playlist:
r p s
Setrideny playlist:
p r s
s intelem:
Kód: [Vybrat]
petanque:~/Vyuka/PIA/STL$ icpc -std=c++0x sort.cpp
Warning #2928: the __GXX_EXPERIMENTAL_CXX0X__ macro is disabled when using GNU version 4.6 with the c++0x option
petanque:~/Vyuka/PIA/STL$ ./a.out
Puvodni playlist:
r p s
Setrideny playlist:
p r s