[GELÖST] Merkwürdige Ausgabe bei const std::vector
-
Abend,
ich bekomme eine merkwürdige Ausgabe, wenn ich auf ein Vektorelement zugreife, egal ob ich [] oder at() verwende.#include <iostream> #include <vector> int main() { const std::vector<int> vec(10); vec[0]; // Hier bekomme ich eine Ausgabe: aasakjasklajaasakl std::cin.get(); }Lasse ich
constweg, kommt die Ausgabe nicht mehr. Kann das jemand erklären?Danke im Voraus.
-
Ich hab mir mal die Header auf dem PC suchen lasse:
const_reference operator[](size_type __n) const { std::cout << "aasakjasklajssaskl"; return *(this->_M_impl._M_start + __n); } protected: /// Safety check used only from at(). void _M_range_check(size_type __n) const { if (__n >= this->size()) __throw_out_of_range(__N("vector::_M_range_check")); }Was auch immer im Kopf dieses Entwicklers vorging.
-
Wo hast du den Compiler her? Bei mir sieht es so aus:
/** * @brief Subscript access to the data contained in the %vector. * @param __n The index of the element for which data should be * accessed. * @return Read-only (constant) reference to data. * * This operator allows for easy, array-style, data access. * Note that data access with this operator is unchecked and * out_of_range lookups are not defined. (For checked lookups * see at().) */ const_reference operator[](size_type __n) const { return *(this->_M_impl._M_start + __n); }GCC 4.7, welchen Compiler hast du?
Edit: Also ich hab praktisch genau denselben Code wie du, nur halt ohne diese Ausgabe. Einfach wegmachen, vergessen

-
Hacker schrieb:
welchen Compiler hast du?
MinGW GCC 4.6.1 32-bit
-
WTF? Willst du uns veräppeln?
Sicher, dass da niemand sonst was an dem Code geändert hat?
-
drakon schrieb:
WTF? Willst du uns veräppeln?
Sicher, dass da niemand sonst was an dem Code geändert hat?(-_-)
Das ist doch mal sowas von klar, dass das nur ein hobbyloser Vollidiot gewesen sein kann, dazu noch ein ganz unlustiger.
Wo hast du denn den Compiler gedownloadet?
-
drakon schrieb:
WTF? Willst du uns veräppeln?
Sicher, dass da niemand sonst was an dem Code geändert hat?Nein, es steht so in
stl_vector.hgeschrieben.
-
Hacker schrieb:
Wo hast du denn den Compiler gedownloadet?
Ich bin gerade am PC meiner Eltern, und da ist ein neueres Dev-C++ installiert.
-
Gugelmoser schrieb:
drakon schrieb:
WTF? Willst du uns veräppeln?
Sicher, dass da niemand sonst was an dem Code geändert hat?Nein, es steht so in
stl_vector.hgeschrieben.Je nach OS kann da jeder, oder zumindest ein Admin, verändern was er möchte. Bei Elternsystemen erfahrungsgemäß eher jeder, weil jeder Admin ist
.P.S.: Von der Art der Veränderung her jemand der dachte, er würde sich auf diese Weise einen schwer zu entdeckenden Scherz erlauben, dabei aber nicht sonderlich kreativ war. Bei TDWTF gab es glaube ich mal einen Wettbewerb, welche Art von unauffälligem "Geschenk" man im Code eines unliebsamen Arbeitgebers zum Abschied hinterlassen könnte. Da kamen weitaus fiesere und gleichzeitig schwerer zu entdeckende Sachen bei rum.
-
Ich habs gerade deinstalliert und danach neu installiert. Und tatsächlich, nun sieht das Ganze so aus:
/** * @brief Subscript access to the data contained in the %vector. * @param n The index of the element for which data should be * accessed. * @return Read-only (constant) reference to data. * * This operator allows for easy, array-style, data access. * Note that data access with this operator is unchecked and * out_of_range lookups are not defined. (For checked lookups * see at().) */ const_reference operator[](size_type __n) const { return *(this->_M_impl._M_start + __n); }Nun bin ich noch mehr verwirrt als zu Beginn.

-
SeppJ schrieb:
Gugelmoser schrieb:
drakon schrieb:
WTF? Willst du uns veräppeln?
Sicher, dass da niemand sonst was an dem Code geändert hat?Nein, es steht so in
stl_vector.hgeschrieben.Je nach OS kann da jeder, oder zumindest ein Admin, verändern was er möchte. Bei Elternsystemen erfahrungsgemäß eher jeder, weil jeder Admin ist
.Ich habe jetzt eher an merkwürdige Source gedacht, aber das ist sicher auch möglich.
-
Wie ein Scherz sieht das IMHO nicht aus, eher wie ne (völlig schlechte) Debugausgabe. Als Scherz wäre eher sowas wie "Are you sure you want to delete C:? [y|n]" geeignet

-
Mir kam grad ein Gedankenblitz - du bist doch nicht Michael Ende? XD
-
Ich habe soetwas mal aus versehen mit boost selbst produziert. Ich habe irgendetwas debuggt, wobei ich auch durch boost-Quellen durchgestept bin. Dann wollte ich per Copy&Paste eine Code zur Ausgabe von einer Quelle in einer andere kopieren, und irgenddwie ist das in einer der durchs Debuggen geöffneten boost-Quellen gelandet. War aber nichts der schlimmste Fauxpas dieser Art war:
Das Schlimmste war, als ich nach dem Debuggen in einem Standardheader ein ; (zwei Fenster, falscher Fokus, Backspace gedrückt und nicht aufgepasst) gelöscht hatte. Eine Flut von Fehlermeldungen, welche so gar nicht auf das Problem hingewiesen haben, war ganz toll. Seit dem setze ich alle Libs auf Read-Only...
-
Tachyon schrieb:
Seit dem setze ich alle Libs auf Read-Only...
Visual Studio macht das beim Installieren netterweise selbst

(EDIT: doch nicht, siehe unten /EDIT)
-
hustbaer schrieb:
Tachyon schrieb:
Seit dem setze ich alle Libs auf Read-Only...
Visual Studio macht das beim Installieren netterweise selbst

Die 2008er Version mit Sicherheit nicht...
-
Tachyon schrieb:
hustbaer schrieb:
Tachyon schrieb:
Seit dem setze ich alle Libs auf Read-Only...
Visual Studio macht das beim Installieren netterweise selbst

Die 2008er Version mit Sicherheit nicht...
Oh wie feig, das gilt anscheinend nur für die Source-Files, aber nicht für die Header-Files (weder CRT noch STL).
So ein Dreck so ein elendiger!