Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zum Zeitpunkt seines Posts war die Diskussion noch längst nicht fertig und seine plumpige Antwort à la "Eure Diskussion ist schwachsinn und ich weiss alles besser: std::array" würde ich schon als getrolle bezeichnen (auch die zwei Edits zeigen, dass er nur schnell etwas hingeschrieben hat anstatt sich die Diskussion durchgelesen hat). Hätte er versucht sich in die Diskussion einzuklinken und mit std::array eine gute Alternative vorgeschlagen, hätte das Ganze etwas anderst ausgesehen.In erster Linie ging es um die Klärung der Frage des TE. Eure Diskussion ist eig. ziemlich ausgeufert (jedenfalls denke ich mal wusste der TE oft nicht worum es gerade geht) und insofern hat idontknow keineswegs destruktive Beitrage verfasst -> somit auch kein "getrolle" betrieben.
Community-Fossil
Diskussionen entstehen halt einmal einfach so, wenn es dann halt bei einem Post ist, der nichts mit dem Thema zu tun hat, dann wäre es die Aufgabe eines Moderators sein einzumischen und mitzuteilen, dass man nicht Offtopic gehen darf (ich weiss nicht was hier so die Regel ist) oder dieser das Thema halt einfach abspaltet.Wie gesagt, in erster Linie geht es um die Frage des TE nicht um irgendeine Diskussion. Da idontknow sich wohl einfach um das primäre Ziel (nämlich der Beantwortung der Frage des TE) gekümmert hat (statt sich in irgendeiner Diskussion einzuklinken, die soweit geht das sie absolut unnütz für den TE und/oder anderen Neulingen auf diesem Gebiet ist) ist sein Beitrag absolut kein getrolle. Alles andere hilfreiche und wesentliche hat ja dot bereits genannt bevor die Diskussion dann wieder einmal in etlichen Beitragen ausartete (nichts gegen dich, ist hier irgendwie immer so).
Sich in eure Diskussion einzumischen war wahrscheinlich niemals sein Ziel. Und letztendlich war seine "Idee" mit str::array ja auch nicht so ganz verkehrt.
Die Stimmung hier ist auch oft sehr agressiv und öfters negativ als positiv. Das ist meine Meinung, welche sich über die kurze Zeit, seit ich hier bin, gebildet hat, diese wurde aber auch schon von anderen bestätigt.P.S.: Du scheinst oft sehr viel mehr (negatives) in irgendwelche Aussagen reinzuinterpretieren, als vllt. nötig und sinnvoll ist.
Wir wärs wenn ein Moderator die Diskussion abspaltet?
Interessant dieses extent template struct, aber ist wohl eher eine Symptom Bekämpfung wie eine Lösung, ist aber natürlich am richtigen Ort durch aus notwendig und sicherlich besser als das C idiom, welches ja nicht type-safe ist.Nicht unbedingt, denn da es sich um ein Array statischer Größer handelt, gehört die Größe natürlich zum Typ. Aber gut, noch besser wäre dann also ein std::array.
Naja gut alle Container haben das Problem eines underflow oder overflow, von daher muss man überall gleich aufpassen. Mit std::vector<T> hätte man natürlich noch die Möglichkeit .at() zu verwenden, jedoch hat das natürlich auch wieder seine Nachteile.Wieso er mit den Indices "viel mehr" aufpassen muss, ist mir allerdings nicht ganz klar.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (12.08.2012, 02:26)
Ich hab noch einen improvisierten 2d Vector aus einem alten Projekt. Er ist zwar nicht perfekt oder fertig, wird aber für deine zwecke völlig ausreichend sein.
http://pastebin.com/uHU0Gw3w
Einfach iin einen Header kopieren und benutzen.
Die Resizemethode ist eigentlich auch nicht dazu gedacht das Feld nachträglich zu vergrößern ohne selbst die Objekte darin zu verschieben. Ich kann ja nicht wissen ob das Feld nach links, rechts, oben, unten oder allen Richtungen vergrößert wird. Daher überlasse ich es den Nutzer ein altes 2D Array in ein neues, größeres zu kopieren. Ich habe die Methode nur erstellt, weil man möglichst einen Standardkostruktor ohne Parameter zur Verfügung stellen sollte und es ohne diese Methode keine Möglichkeit gäbe die größe festzulegen.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
vector2D& operator =(vector2D&& v) { m_Field = move(v.m_Field); m_Width = v.m_Width; m_Height = v.m_Height; return *this; } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
vector2D v bla(10, 12); // ... bla = vector2D(42, 23); |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (12.08.2012, 03:23)
Community-Fossil
Kleiner Hinweis: Die Indexberechnung hat wohl einen Bug, sollte imo m_Width * vector.y sein und nicht m_Height * vector.y.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »NachoMan« (12.08.2012, 04:05)
Dein Vorschlag macht wohl nur mit dem neuen Standard Sinn?
Mir ging es darum eine einfache Lösung zu bieten, die er verstehen kann, die auch mit einem älteren Kompiler funktioniert und wofür er keine riesige Bibliothek wie Boost herunterladen und einrichten muss.
Trotzdem müsste ich mich mal mit dem neuen Standard beschäftigen. Das nächste Buch ist schon vorgemerkt.
Community-Fossil
Werbeanzeige