{"id":412,"date":"2015-09-29T12:34:39","date_gmt":"2015-09-29T12:34:39","guid":{"rendered":"http:\/\/coolt.ch\/notizen\/?p=412"},"modified":"2015-11-17T17:35:39","modified_gmt":"2015-11-17T17:35:39","slug":"c-vector","status":"publish","type":"post","link":"https:\/\/coolt.ch\/notizen\/c-vector\/","title":{"rendered":"c++: vector as new type in -std=c++11"},"content":{"rendered":"<p>Eine sichere Alternative zum Array!<\/p>\n<pre class=\"lang:sh decode:true \">#include &lt;vector&gt;<\/pre>\n<pre class=\"lang:c++ decode:true\">std::vector &lt;int&gt; messungen = { 12, 10, 11, 12, 10 };\r\nstd::vector &lt;string&gt; klasse_1b = { \"eva\", \"tim\", \"lin\", \"noe\" };\r\nstd::vecrot &lt;Class&gt; token_table = { \"n\", 5, \"+\", 2, \"*\", 4 };<\/pre>\n<p><strong><br \/>\nWertzuweisung<\/strong><\/p>\n<pre class=\"lang:sh decode:true \">messungen[1] = 11;\r\ntoken_table[2] = { \"*\", 3 }<\/pre>\n<p>&nbsp;<\/p>\n<p><strong><a href=\"http:\/\/coolt.ch\/notizen\/c-schuetzen-des-objekts-vektor-per-reference\/\">Vektor per Referenz \u00fcbergeben<\/a><br \/>\n<\/strong>Damit <strong>nicht alle Werte<\/strong> des Vektors<strong> \u00fcbergeben<\/strong> werden m\u00fcssen, wird nur die Adresse \u00fcbergeben (siehe<a href=\"http:\/\/coolt.ch\/notizen\/pointers-in-c\/\"> Pointer<\/a>)<strong>.<br \/>\n<\/strong><\/p>\n<pre class=\"lang:sh decode:true\">void print( <strong>const<\/strong> vektor &lt;int&gt;<strong>&amp;<\/strong> messungen){\r\n.   \/\/ code\r\n}<\/pre>\n<p>Zur Referenz\u00fcbergabe geh\u00f6rt sowohl das &amp; (Adresse mitgeben).<\/p>\n<p><strong>Mit 0 oder leeren Strings initialisieren<\/strong><\/p>\n<pre class=\"lang:sh decode:true\">std::vector &lt;int&gt; messungen( 5 );\r\nstd::vector &lt;string&gt; klasse_1b( 4 );<\/pre>\n<p>Achtung: geht nur, wenn man mit -std=c++11 kompiliert.<\/p>\n<p><strong>for eines Vektors<br \/>\n<\/strong><\/p>\n<pre class=\"lang:sh decode:true\">for <strong>(int i : messungen)<\/strong>{\r\n.    (if i = 5 ) {\r\n.        \/\/\r\n.     }\r\n}<\/pre>\n<p>Das verk\u00fcrzte For f\u00fcr einen Vektor gibt zu Beginn den Datentyp an und nach dem Doppelpunkt die L\u00e4nge des Vekorts. Dann geht das For durch jedes Elements des Vektors.<\/p>\n<p><strong>for eines Vektors aus einem Klassen-Datentyp<\/strong><\/p>\n<pre class=\"lang:sh decode:true\">for (Token t: token_table){\r\n.    (if <strong>t.nummer<\/strong> == 5) {\r\n.        \/\/\r\n.     }\r\n}<\/pre>\n<p>Wieder zuerst der Datentyp (Token) und dann den Vektor.<br \/>\nBei der <strong>interenen Auswertung<\/strong>, muss gesagt werden, auf welchen <strong>Variabelntyp<\/strong> der Klasse sich die Auswertung bezieht. (Bei der Klasse Token hat jeder Index zwei Variablen: <strong>string operation<\/strong> und <strong>int nummer<\/strong>.)<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Funktionen f\u00fcr Vektorbearbeitung<br \/>\n<\/strong><\/p>\n<pre class=\"lang:sh decode:true \">int anzahl = messungen.size();\r\nmessungen.sort();<\/pre>\n<p><strong><br \/>\nDaten in Vector einlesen<\/strong><\/p>\n<pre class=\"lang:sh decode:true \">vector &lt;int&gt; data;\r\nint current_element;\r\n\r\nwhile ( cin ){\r\n    cin &gt;&gt; current_element\r\n     data.push_back ( current_element );\r\n}<\/pre>\n<p>&#8211; Die Funktion push_back() h\u00e4ngt neue Daten hinten an.<br \/>\n&#8211; Sie vergr\u00f6ssert die Vektorgr\u00f6sse damit immer um 1<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine sichere Alternative zum Array! #include &lt;vector&gt; std::vector &lt;int&gt; messungen = { 12, 10, 11, 12, 10 }; std::vector &lt;string&gt; klasse_1b = { &#8222;eva&#8220;, &#8222;tim&#8220;, &#8222;lin&#8220;, &#8222;noe&#8220; }; std::vecrot &lt;Class&gt; token_table = { &#8222;n&#8220;, 5, &#8222;+&#8220;, 2, &#8222;*&#8220;, 4 }; Wertzuweisung messungen[1] = 11; token_table[2] = { &#8222;*&#8220;, 3 } &nbsp; Vektor per Referenz \u00fcbergeben &hellip; <a href=\"https:\/\/coolt.ch\/notizen\/c-vector\/\" class=\"more-link\"><span class=\"screen-reader-text\">c++: vector as new type in -std=c++11<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[29],"tags":[18,11,8],"_links":{"self":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/412"}],"collection":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/comments?post=412"}],"version-history":[{"count":15,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/412\/revisions"}],"predecessor-version":[{"id":965,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/412\/revisions\/965"}],"wp:attachment":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/media?parent=412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/categories?post=412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/tags?post=412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}