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