Einführung in statische Vektoren in C++ im Rahmen der Lehre des Programmierens mit der Programmiersprache C++. (), Lektion, Seite 721383
https://www.purl.org/stefan_ram/pub/c++_statische_vektoren_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C++-Kurs

Vektoren in C++ 

Die Schablone »::std::vector« ähnelt der Schablone »::std::basic_string«.

Um Vektoren verwenden zu können, wird die Direktive »#include <vector>« benötigt.

main.cpp

#include <initializer_list>
#include <iostream>
#include <ostream>
#include <string> /* ::std::basic_string */
#include <vector>

int main()
{ ::std::basic_string< char >s{ 'a', 'b' };
::std::cout << s.size() << '\n';
::std::cout << s.at( 0 )<< '\n';
::std::cout << s.at( 1 )<< '\n';

::std::vector< char > v{ 'a', 'b' };
::std::cout << v.size() << '\n';
::std::cout << v.at( 0 )<< '\n';
::std::cout << v.at( 1 )<< '\n'; }

transcript
2
a
b
2
a
b

Objekte eines Typs einer Anwendung der Schablone »::std::vector« werden auch Vektoren  genannt.

Die einzelnen Objekt in einem Vektor nennen wir auch die Komponenten  des Vektors.

Ein Vektor kann ähnlich wie eine Zeichenfolge verwendet werden. Zwei wichtige Unterschiede sind jedoch:

Das folgende Beispiel zeigt ein Vektor mit int-Objekten und einen Vektor mit einem ::std::string-Objekt.

main.cpp

#include <initializer_list>
#include <iostream>
#include <ostream>
#include <string>
#include <vector> /* ::std::vector */

using namespace ::std::literals;

int main()
{ { ::std::vector< int >v{ 0, 1, 2 };
::std::cout << v.at( 0 )<< '\n';
::std::cout << v.at( 1 )<< '\n';
::std::cout << v.at( 2 )<< '\n';
} /* Hier wird der Speicher von v wieder freigegeben */

{ ::std::vector< int >v{ 0, 1 };
::std::cout << " " << v.at( 0 )<< '\n';
::std::cout << " " << v.at( 1 )<< '\n'; }

{ ::std::vector< int >v{ 0 };
::std::cout << " " << v.at( 0 )<< '\n'; }

{ ::std::vector< int >v {}; /* leerer Vektor */ }

{ ::std::vector< ::std::string >v{ "b"s };
::std::cout << v.at( 0 )<< '\n'; }}

Protokoll
0
1
2
0
1
0
b

Die bei Facebook  am häufigsten verwendeten Vektoren sind

(Quelle: Video: Nicholas Ormrod: “The strange details of std::string at Facebook ”, Cppcon 2016 )

Änderungen via »at«

Viele Behälter, wie beispielsweise Vektoren, erlauben es, ihre Komponenten durch eine Zuweisung an einen at-Aufruf zu ändern.

Jedoch kann eine Funktion einen ihr „übergebenen“ Vektor nicht  ändern, da der Parametervektor eine unabhängige Kopie des Argumentvektors darstellt. Die Situation ist hier genau wie bei int-Objekten. Wie solche Änderungen doch möglich sind, wird erst später im Kurs gezeigt werden.

main.cpp

#include <initializer_list>
#include <iostream>
#include <ostream>
#include <string>
#include <vector> /* ::std::vector */

using namespace ::std::literals;

static void f( ::std::vector< int >v ) { v.at( 0 )= 7; }

int main()
{ ::std::vector< int >v{ 0, 1, 2 };
v.at( 0 )= 4;
::std::cout << v.at( 0 )<< '\n';
f( v );
::std::cout << v.at( 0 )<< '\n'; }

transcript
4
4

Man sagt auch, »v.at( 0 )« sei ein “lvalue ”, um auszudrücken, daß es auch auf der linken Seite eines Zuweisungsoperators verwendet werden darf.

Anfügen via »push_back«

Die am häufigsten verwendeten Methoden von Vektoren sind vermutlich »size()«, »push_back«/»emplace_back« und »at()«.

Mit »push_back« wird ein Objekt an das Ende eines Vektors angefügt, und mit »size()« wird die Anzahl der in einem Vektor enthaltenen Komponenten ermittelt.

main.cpp

#include <initializer_list>
#include <iostream>
#include <ostream>
#include <string>
#include <vector> /* ::std::vector */

using namespace ::std::literals;

int main()
{ ::std::vector< int >v;
::std::cout << v.size()<< '\n';
v.push_back( 3 );
::std::cout << v.size()<< '\n';
::std::cout << v.at( 0 )<< '\n'; }

transcript
0
1
3

Anfügen via »emplace_back«

main.cpp

#include <algorithm>
#include <initializer_list>
#include <iostream>
#include <ostream>
#include <string>
#include <vector>

int main()

{ ::std::vector< ::std::pair< int, int >>v;
v.emplace_back( 0, 1 ); /* "Weiterreichen" der Argumente */
v.emplace_back( 2, 3 ); /* an den Konstruktor von pair. */
::std::cout << v.at( 0 ).first << '\n';
::std::cout << v.at( 0 ).second << '\n';
::std::cout << v.at( 1 ).first << '\n';
::std::cout << v.at( 1 ).second << '\n'; }

Protokoll
0
1
2
3
main.cpp

#include <algorithm>
#include <initializer_list>
#include <iostream>
#include <ostream>
#include <string>
#include <vector>

int main()

{ ::std::vector< ::std::pair< int, int >>v;
::std::pair< int, int > const p{ 4, 5 };
::std::pair< int, int > const q{ 6, 7 };
v.push_back( p ); /* push_back hat immer genau */
v.push_back( q ); /* ein Argument. */
::std::cout << v.at( 0 ).first << '\n';
::std::cout << v.at( 0 ).second << '\n';
::std::cout << v.at( 1 ).first << '\n';
::std::cout << v.at( 1 ).second << '\n'; }

Protokoll
4
5
6
7

emplace_back erzeugt das Paar direkt im Vektor, bei push_back wird ein schon vorhandenes Paar in den Vektor kopiert, das eventuell erst vorher in einem extra Schritt erzeugt worden sein muß.

Übungsaufgaben

/   Übungsaufgabe

Ergänzen Sie die folgenden Programmschablone an den mit einer Ellipse »« gekennzeichneten Stellen, so daß die Funktion »print« den ihr übergebenen Vektor wie unter dem Programm gezeigt einmal vorwärts und einmal rückwärts ausgibt. Hierfür können Elementfunktionen der Klasse »::std::vector< char >« und Schleifen verwendet werden.

main.cpp

#include <initializer_list>
#include <iostream>
#include <ostream>
#include <vector> /* ::std::vector */

void print_forward( ::std::vector< char > const v )
{ … }

void print_reverse( ::std::vector< char > const v )
{ … }

void print( ::std::vector< char > const v )
{ print_forward( v );
print_reverse( v ); }

int main()
{ { ::std::vector< char >v{ 'a', 'b' }; print( v ); }
{ ::std::vector< char >v{ 'a', 'b', 'c' }; print( v ); }}

transcript
ab
ba
abc
cba

Ersetzen Sie die Funktionen durch Zusatzanforderung Funktionsschablonen, so daß sie auch für »::std::vector< int >« und »::std::vector< double >« verwendet werden können.

/   Übungsaufgabe

Schreiben Sie eine Funktion »sum«, die einen Vektor von int-Werten als Argument akzeptiert und unter Verwendung einer Schleife die Summe aller Werte des Vektors zurückgibt. Hierzu können Sie die Elementfunktionen »size« und »at« verwenden.

main.cpp

#include <initializer_list>
#include <iostream>
#include <ostream>
#include <vector> /* ::std::vector */

int main()
{ ::std::vector< int >v { 1, 2, 3 };
::std::cout << sum( v ) << '\n'; /* 6 */}

transcript
6

Ersetzen Sie die Funktion » Zusatzanforderungsum« durch eine Funktionsschablone  »sum«, so daß sie auch für »::std::vector< double >« verwendet werden kann.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721383 stefan_ram:721383 source, source code,sourcecode, Programmier sprache C++ Sprache, C++, CXX, C+, Programm, Programme, C++-Programm C++ Sprache C++ Programmiersprache C++ c++-Programme, Standard C++, Programmieren in C++, Programmieren in CXX, Programmieren in CPP, Programmieren in Cplusplus, Die Programmiersprache C++, Die Programmiersprache CXX, Die Programmiersprache CPP, Die Programmiersprache Cplusplus, Die Programmier sprache C++, Die Programmier sprache CXX, Die Programmier sprache CPP, Die Programmier sprache Cplusplus, CXX-Programmierung, C++-Programmierung, CPP-Programmierung, c-plus-plus, cpluplus-Programmierung, ANSI-C++, ANSI-CXX, ANSI-CPP, ANSI C++, ANSI CXX, ANSI-cpluscplus ISO-C++, ISO-CXX, ISO CPP, ISO C++, ISO CXX, ISO/IEC-C++, ISO/IEC-CXX, ISO/IEC CPP, ISO/IEC C++, ISO/IEC CXX, IEC-C++, IEC-CXX, IEC CPP, IEC C++, IEC CXX, International Standard ISO/IEC 14882 First edition 1998-09-01, ISO/IEC 14882:1998(E), ISO/IEC 14882:2003(E), ASC X3, 7/27/98, c plus plus, C ++, cplusplus, c plus plus, Standard C+ programmieren, Stamdard C++ programmieren, Standart C+ programmieren, Stamdart C++ programmieren, INCITS/ISO/IEC 14882-1998, Information Technology - Programming Languages - C++ (formerly ISO/IEC 14882-1998), Programmieren in C++,Programmiersprache C++ CPP CXX Cplusplus c plus plus International Standard ISO/IEC 14882 First edition 1998-09-01, Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721383, slrprddef721383, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/c++_statische_vektoren_de