Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 06:42

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Struct Allokieren ?

Discussion on Struct Allokieren ? within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2012
Posts: 8
Received Thanks: 0
Question Struct Allokieren ?

Hallo,

Ich arbeite mich gerade durch das Buch C++ A - Z und bin gerade bei den Structuren, so
jetzt habe ich mir als beispiel ein kleines (Telefon Buch) gemacht ganz simpel (Vorname, Nachname, Geschlecht, Nummer)

Code
PHP Code:
#include "stdafx.h"

using namespace std


struct Handy_Buch
{
    
char Vorname[56], Nachname[56]; 
    
bool Geschlecht
    
int  Handynummer
}; 



int _tmain(int argc_TCHARargv[])
{
    
    
Handy_Buch *book = new Handy_Buch();

    
// Neue Person eintragen 

    
strcpy_s(book->Vorname"Test"); 
    
strcpy_s(book->Nachname"Test");
    
book->Handynummer 8888;
    
book->Geschlecht  0

    
// Person ausgeben 

    
cout << "::::Handy-Buch::::\n" << "Vorname: " << book->Vorname << "\nNachname: " << book->Nachname << "\nHandynummer: 0" << book->Handynummer << "\nGeschlecht: "
    if(
book->Geschlecht == 0){
        
cout << "Maennlich" << endl
    }else if(
book->Geschlecht == 1){
        
cout << "Weiblich" << endl
    }else{
        
cout << "/" << endl
    }
    
cout << "..... Ende" << endl

    
getchar(); 
    return 
0;

Jetzt würde ich gerne mehr als 1 Konto speichern ohne arrays zu nutzen ich habe mich schon schlau gemacht im Internet, was ich gefunden habe ist Allokieren doch werde ich nicht 100% schlau raus weil ich ja später vergleichen will und nur bestimmte Kontos aufrufen will, meine frage kann mir vlt jemand helfen mir das Allokieren nähr bringen ?

Edit~

Ich möchte später die Daten in eine Datenbank speichern und wieder laden lassen und wenn ich ein neues Konto hinzufüge prüfe ob es die Nummer schon gibt vorname.
°Jin° is offline  
Old 12/03/2012, 13:33   #2
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
du alloziertst soch schon n der ersten zeile von main mit dem new operator.

wenn du mehere objekte speichern willst, ohne für jedes eine neue variable zu benutzten musst du ein array (b.z.w. list, stack oder ähnliches) benutzten. wenn du die dynamisch allozierst hast du eben ein array von ziegern.

ein array ist im grunde auchnur ein zeiger auf das erste element, natürlcih kannst du auch nur den abspeichern und die positionen selbst ausrechnen aber das macht keinen sinn.

wieso willst du es denn ohne arrays machen?
nkkk is offline  
Old 12/03/2012, 13:47   #3
 
elite*gold: 0
Join Date: Nov 2012
Posts: 8
Received Thanks: 0
Quote:
du alloziertst soch schon n der ersten zeile von main mit dem new operator.

wenn du mehere objekte speichern willst, ohne für jedes eine neue variable zu benutzten musst du ein array (b.z.w. list, stack oder ähnliches) benutzten. wenn du die dynamisch allozierst hast du eben ein array von ziegern.

ein array ist im grunde auchnur ein zeiger auf das erste element, natürlcih kannst du auch nur den abspeichern und die positionen selbst ausrechnen aber das macht keinen sinn.

wieso willst du es denn ohne arrays machen?
Achso achso ..

Ich möchte gerne als Projekt ein kleines Telefon Buch schreiben, der alle Personen in eine Datenbank speichert (diesen teil habe ich schon fertig) beim Start möchte ich gerne alle Personen Informationen in eine Structur speichern.. und einzeld ausgeben lassen bei Arrays in das ja simpel Array[Punkt][Stelle] doch wie mache ich das bei Structuren obj->Vorname (der 3 aus der Datenbank) ?

Edit~

Die Datenbank sieht so aus !
Code:
ID, Vorname, Nachname, Geschlecht, Nummer
°Jin° is offline  
Old 12/03/2012, 14:09   #4
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
naja wie ganau man das macht hängt davon ab welche db zu verwendest, oder ob du OR-mapping verwendest.

für mysql ist hier: ein post der erklärt wie man daruf zugreift.
allgemein mit arrays man es so
1) Get anzahlzeilen
Code:
Handy_Buch** Liste  = new (Handy_Buch*)[anzahlzeilen];
for i = 1... anzahlzeilen
   Liste[i] = new Handy_Buch();
   Liste[i]->Handynummer  = ...
   ...
der code kann fehlerhaft sein hab lange nciht in c++ gecodet.
aber es gibt klassen list etc die man statt einem array verwenden kann(sollte) weil die einfacher zu benitzten sind.
nkkk is offline  
Old 12/03/2012, 15:00   #5
 
elite*gold: 0
Join Date: Nov 2012
Posts: 8
Received Thanks: 0
Hmm,

Gibt es noch eine andere möglichkeit ?
°Jin° is offline  
Old 12/03/2012, 16:53   #6
 
elite*gold: 0
Join Date: Sep 2010
Posts: 454
Received Thanks: 212
Wieso erstellst du denn nicht einfach mehrere Objekte von "Handy_Buch" ?
Oder machst es so:
Code:
Handy_Buch bookarray[100];
bookarray[1].Geschlecht = 1;
bookarray[1].Handynummer = 123;
...
Zwawo is offline  
Old 12/03/2012, 20:35   #7
 
elite*gold: 0
Join Date: Nov 2012
Posts: 8
Received Thanks: 0
Hmm,

Oke das geht auch doch wenn ich das so machen will Handy_Buch *book[100];
spuckt er mir eine lese Fehler aus, gibt es noch eine möglichkeit im Buch steht nicht leider viel dazu drine.
°Jin° is offline  
Old 12/03/2012, 22:43   #8
 
elite*gold: 0
Join Date: Sep 2010
Posts: 454
Received Thanks: 212
Wieso muss es denn unbedingt ein Pointer sein?
Zwawo is offline  
Old 12/05/2012, 21:11   #9
 
Master674b's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 255
Received Thanks: 110
Code:
struct SPersonEntry {
	std::wstring FirstName, LastName; // Chinesische, Russische Namen usw ;)
	bool Gender;
	uint32 Phone;
}

class CPhoneBook : public Singleton<CPhoneBook> {
public:
	CPhoneBook() {
		/* Personen laden... */
		SPersonEntry personEntry;
		personEntry.FirstName = L"...";
		// ...
		m_content.insert( personEntry ); }

	inline const std::list<SPersonEntry>& content() const {
		return m_content;
	}

protected:
	std::list<SPersonEntry> m_content;
};
So wäre in etwa meine Lösung

Iteration über die objekte ist mit STL containern auch sehr nice.

hier:

Code:
for( auto person : sPhoneBook.content() ) {
	if( person.FirstName == L"Max" && person.LastName == L"Mustermann" )
		/* Max Mustermann gefunden! */
}
Master674b is offline  
Old 12/06/2012, 00:55   #10
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
std::list ist hier wohl eine relativ schlechte Idee. std::vector ist in 95% der Anwendungsfälle die richtige Wahl.
Oh, und das inline kannst du dir sparen, dein Compiler ignoriert das.
Nightblizard is offline  
Old 12/06/2012, 16:10   #11
 
Master674b's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 255
Received Thanks: 110
Quote:
Originally Posted by Nightblizard View Post
std::list ist hier wohl eine relativ schlechte Idee. std::vector ist in 95% der Anwendungsfälle die richtige Wahl.
Oh, und das inline kannst du dir sparen, dein Compiler ignoriert das.
Wieso sollte ich den vektor bevorzugen? Ich brauche die liste nicht als fixes array das dauernd einen Speicherwechsel macht ohne reserve.

Falls ich einzigartige Einträge möchte wäre auch ein std::set zu empfehlen.
Master674b is offline  
Old 12/08/2012, 20:12   #12
 
elite*gold: 0
Join Date: Nov 2012
Posts: 8
Received Thanks: 0
Entschuldigung das ich mich erst so spät melde , Danke für die beispiele ich habe mir mal die Vectors angeschaut doch wenn ich 2x mal die gleiche exe zeitgleich Starte bekomme ich einen Fehler einen Deadlock ^^
°Jin° is offline  
Reply


Similar Threads Similar Threads
Constantinople Fortress Struct
08/21/2023 - SRO Private Server - 2 Replies
Hello Epvp I have a struct problem on cons fw. http://f1211.hizliresim.com/13/c/fudcq.jpg _SiegeFortressStruct 4 0 342 19616 1104000 2012-08-22 15:27:48.000 0 4 0 382 19543 0 2012-11-11 13:15:01.950 0 4 0 383 19543 0 2012-11-11 13:15:01.950 0 4 0 384 19543 0 2012-11-11 13:15:01.950 0 4 0 385 19543 0 2012-11-11 13:15:01.950 0
[S] Warrock Struct Logger
11/17/2012 - WarRock - 1 Replies
Topic. Skype: epvp.pinkbeatz
struct and classes
08/03/2012 - CO2 Programming - 6 Replies
took about 50 pages reading about difference between structs and classes , so i thought it's good idea to sum up this for whoever want to get it with a spoon , feel free to correct or add information at struct cannot have instance field initializers in structs struct time { private int x = 5; // compile-time error } Structs cannot contain explicit parameterless constructors struct time {
[c++] struct
08/25/2011 - C/C++ - 2 Replies
Kann closed werden. sry
Packet Struct's
05/02/2009 - Kal Online - 30 Replies
Mir war langweilig hier nen beispiel wie ihr wie ich finde alles bischen besser aussehn lassen könnt :P struct PacketsSend { DWORD VersionCheck; DWORD Login; DWORD Ping; DWORD Skill; DWORD Chat;



All times are GMT +1. The time now is 06:43.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.