Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Sortering??

Postades av 2005-11-09 17:20:24 - Eric Johansson, i forum c++, Tråden har 9 Kommentarer och lästs av 951 personer

Hej alla glada mäniskor!
Jag behöver sortera en vector utav en class variabel.

class info1
{
public:
     CString namn;
     CString adress;
};
vector<info1> data;



I det här fallet data!
Jag vill sortera efter namn.
Jag sparar allt i en .txt fil när jag avslutar och vill ha allt i bokstavs ordning.
Jag läser in informationen när jag startar programmet så att jag kan lägga till
information och ta bort information.

Tack på förhand...
// Eric


Svara

Sv: Sortering??

Postades av 2005-11-10 00:24:02 - Niklas Jansson

1. Använd inte CString - det är en gammal klass från ms. Kör med den inbyggda std::string istället.
2. Ha helst inte variablerna som publika. Det är bättre att använda åtkomstmetoder.
3. Definiera jämförelseoperatorerna <, > osv. typ:

class info
{
public:
     std::string namn;
     std::string adress;
     bool operator< (const info &p){
          return (namn < p.namn);
     }
};


Sen kör du med den inbyggda std::sort för att sortera vectorn.


Svara

Sv: Sortering??

Postades av 2005-11-10 10:15:12 - Martin Adrian

Varför inte använda en map (eller multimap om det kan finna flera med samma namn). Då blir den ju sorterad från början.

<code=c++>
typedef std::map<std::string, std::string> data_t;
data_t data;
// inläsning
data.insert(data_t::value_type(namn, adress));
...
// spara
for (data_t::iterator it = data.begin(); it != data.end(); ++it)
std::cout << "namn=" << it->first << " adress " << it->second << std::endl;
</code>


Svara

Sv:Sortering??

Postades av 2005-11-11 08:52:34 - Eric Johansson

Jag behöver använda CString för att visa texten i en EDIT-ruta i mitt program.. Jag ber om ursäkt för otydligheten... om jag använder "std::string" blir det bara jobbigt med konvertering...


Svara

Sv: Sortering??

Postades av 2005-11-11 09:45:42 - Martin Adrian

CString går väl också att använda med standardalgoritmer.
<code=c++>
struct info1 {
CString namn;
...
};

vector<info1> data;

sort(data.begin(), data.end(), boost::bind(&info1::name, _1) < boost::bind(&info1::name, _2));
</code>


Svara

Sv:Sortering??

Postades av 2005-11-11 13:34:32 - Niklas Jansson

Angående string vs CString. Okej, det må vara hänt.
Skulle ändå rekommendera dig att överväga det. En konvertering string -> CString är inget större arbeta vad jag kan minnas (något i stil med CString(s.c_str())?), och std::string är ju bra mycket mer trevligt eftersom alla vet hur de funkar, och eftersom du i princip kan porta alla delar som inte har att göra med konvertingen explicit. Om det skulle vara aktuellt att byta plattform alltså.


Svara

Sv:Sortering??

Postades av 2005-11-16 12:24:08 - Eric Johansson

vad gör

boost::bind


Svara

Sv: Sortering??

Postades av 2005-12-08 10:19:43 - Eric Johansson

Jag får tyvärr inget exempel att funka...
någon som kan skriva ett fungerande exempel...(eller att helt exempel)
jag kanske inte har kunskapen att förstå era exempel???
vem vet...


Svara

Sv:Sortering??

Postades av 2005-12-08 17:13:26 - Niklas Jansson

Har inte tid nu, men sök på "C++ STL sort example" så ska du nog hitta något. Bind där är onödigt ur viss synvinkel, även om det på sitt sätt är renare.

I princip så är det så att för att du ska kunna sortera något så måste du veta i vilken ordning de ska ligga. Sort förutsätter därför att objekt av typen definierar en <-funktion (kanske även några fler). Om du t.ex. har en vektor med heltal som du vill sortera, så finns < automatiskt (3<4, !(4<3)).

Så definiera bara något i stil med:
operator < (info1 x) {return namn < x.namn;}

så löser det sig nog.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
5 750
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies