Dynamsiches Array
-
GhostfaceChilla schrieb:
Hallo Leutem ich wollte ein Array erstellen, welches sich immer wieder um 1 erweiter, wenn ich etwas eingebe.
Warum solltest du sowas tun wollen?
sizeof(dnmc_array)tut nicht was du denkst. Was ist sizeof(void*)? sizeof(int*) - welchen Typ hat dnmc_array?Warum hast du es eigentlich nicht dnmcrry, tmprry, nmbr und sz genannt, wo du schon zur besseren Lesbarkeit Vokale rauswirfst?

Dein Programm bricht übrigens nicht ab, es stürzt ab, weil du über das allokierte Ende von tmp_array hinaus zugreifst.
Dein Programm in C++:
#include <iostream> #include <vector> using namespace std; int main() { int number; vector<int> allNumbers; while(cin >> number) { allNumbers.push_back(number); } }Oder auch:
#include <iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std; int main() { std::vector<int> numbers; typedef istream_iterator<int> intIt; std::copy(intIt(cin), intIt(), back_inserter(numbers)); }
-
pumuckl schrieb:
Oder auch:
#include <iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std; int main() { std::vector<int> numbers; typedef istream_iterator<int> intIt; std::copy(intIt(cin), intIt(), back_inserter(numbers)); }#include <iostream> #include <vector> #include <iterator> using namespace std; int main() { typedef istream_iterator<int> intIt; vector<int> numbers(intIt(cin), intIt()); }
-
Kellerautomat schrieb:

Autsch, mein Brett vorm Kopp...
-
typedef istream_iterator<int> intIt; vector<int> numbers(intIt(cin), (intIt())); // most vexing parseAuch nur drüber gestolpert...

-
Muss nicht. Nur MSVC ist zu doof dafuer, afaik.
Edit: http://ideone.com/B9nVT
-
Kellerautomat schrieb:
Muss nicht. Nur MSVC ist zu doof dafuer, afaik.
GCC auch

-
Siehe Edit. Das ist ganz eindeutig ein Konstruktoraufruf.
-
Kellerautomat schrieb:
Siehe Edit. Das ist ganz eindeutig ein Konstruktoraufruf.
Nö, das ist ein typedef und eine Funktionsdeklaration, was natürlich kompiliert. Erst wenn du mit dem vector arbeiten willst gehts schief:
#include <iostream> #include <vector> #include <iterator> #include <algorithm> using namespace std; int main() { typedef istream_iterator<int> intIt; vector<int> numbers(intIt(cin), intIt()); copy(numbers.begin(), numbers.end(), ostream_iterator<int>(cout, "; ")); }prog.cpp: In function ‘int main()’: prog.cpp:12: error: request for member ‘begin’ in ‘numbers’, which is of non-class type ‘std::vector<int, std::allocator<int> > ()(main()::intIt, main()::intIt (*)())’ prog.cpp:12: error: request for member ‘end’ in ‘numbers’, which is of non-class type ‘std::vector<int, std::allocator<int> > ()(main()::intIt, main()::intIt (*)())’
-
Ah lol, das war natuerlich doof von mir. Aber was zur Hoelle ist denn das fuer eine Funktionsdeklaration, naemlich intIt(cin). Was soll denn das sein?

-
das cin in Klammern ist zwar ungewöhnlich, aber gültig - einfach der Name des Parameters

void foo( int (bar) ) //void foo(int bar) { std::cout << bar; }
-
Strange. Wer denkt sich denn sowas aus.
-
Kellerautomat schrieb:
Strange. Wer denkt sich denn sowas aus.
="Jack Sparrow"]Das waren die Franzosen.