Als «c++» getaggte Fragen

C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entwickelt und hat eine ähnliche Syntax, ist aber jetzt eine völlig andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. Verwenden Sie ein versionierungsspezifisches Tag für Fragen zu einer bestimmten Standardversion [C ++ 11], [C ++ 14], [C ++ 17] oder [C ++ 20] usw.



5
Gewerkschaften und Typ-Punning
Ich habe eine Weile gesucht, kann aber keine klare Antwort finden. Viele Leute sagen, dass die Verwendung von Gewerkschaften zum Schreiben von Wortspielen undefiniert und eine schlechte Praxis ist. Warum ist das? Ich kann keinen Grund erkennen, warum es etwas Undefiniertes tun würde, wenn man bedenkt, dass sich der Speicher, …
76 c++  c  unions  type-punning 

7
Was ist die Verwendung der Funktion c_str In c ++
Ich habe gerade angefangen, C ++ zu lesen und festgestellt, dass C ++ reichhaltige Funktionen für die String-Manipulation hat, die C nicht hat. Ich lese diese Funktion und bin auf etwas gestoßen, c_str()von dem ich verstehe c_str, dass es eine Zeichenfolge konvertiert, die möglicherweise nullterminiert ist oder nicht, in eine …
76 c++  c  string 

3
So erhalten Sie effizient eine "string_view" für einen Teilstring von "std :: string"
Wenn ich http://en.cppreference.com/w/cpp/string/basic_string_view als Referenz verwende, sehe ich keine Möglichkeit, dies eleganter zu tun: std::string s = "hello world!"; std::string_view v = s; v = v.substr(6, 5); // "world" Schlimmer noch, der naive Ansatz ist eine Falle und hinterlässt veinen baumelnden Hinweis auf eine vorübergehende: std::string s = "hello world!"; …
76 c++  view  c++17  stdstring 

2
Vorbereitung für veraltete std :: iterator
Am 21. März st stimmte der Normenausschuss der deprecation von genehmigen std::iteratorvorgeschlagen in P0174 : Die lange Folge von ungültigen Argumenten ist für den Leser viel weniger klar als die bloße typedefAngabe der erwarteten s in der Klassendefinition selbst. Dies ist der Ansatz des aktuellen Arbeitsentwurfs nach dem festgelegten Musterc …


4
Warum gibt es in C und C ++ Digraphen?
Ich habe heute erfahren, dass es in C99 und C ++ Digraphen gibt. Folgendes ist ein gültiges Programm: %:include <stdio.h> %:ifndef BUFSIZE %:define BUFSIZE 512 %:endif void copy(char d<::>, const char s<::>, int len) <% while (len-- >= 0) <% d<:len:> = s<:len:>; %> %> Meine Frage ist: Warum existieren …
76 c++  c  c99  digraphs 

7
Enum-Klasse kann nicht als unordered_map-Schlüssel verwendet werden
Ich habe eine Klasse, die eine Aufzählungsklasse enthält. class Shader { public: enum class Type { Vertex = GL_VERTEX_SHADER, Geometry = GL_GEOMETRY_SHADER, Fragment = GL_FRAGMENT_SHADER }; //... Wenn ich dann den folgenden Code in einer anderen Klasse implementiere ... std::unordered_map<Shader::Type, Shader> shaders; ... Ich erhalte einen Kompilierungsfehler. ...usr/lib/c++/v1/type_traits:770:38: Implicit instantiation …
76 c++  c++11  map  enums  enum-class 

4
Initialisieren von Elementvariablen mit demselben Namen für Konstruktorargumente wie für die vom C ++ - Standard zugelassenen Elementvariablen?
Ich habe herausgefunden, dass es möglich ist, die Mitgliedsvariablen mit einem Konstruktorargument mit demselben Namen wie im folgenden Beispiel zu initialisieren. #include <cstdio> #include <vector> class Blah { std::vector<int> vec; public: Blah(std::vector<int> vec): vec(vec) {} void printVec() { for(unsigned int i=0; i<vec.size(); i++) printf("%i ", vec.at(i)); printf("\n"); } }; int …
76 c++ 

3
Verwenden von std :: max_element für einen Vektor <double>
Ich versuche, die Min- und Max-Elemente in einem Doppelvektor zu verwenden std::min_elementund std::max_elementzurückzugeben. Meinem Compiler gefällt nicht, wie ich sie derzeit verwenden möchte, und ich verstehe die Fehlermeldung nicht. Ich könnte natürlich meine eigene Prozedur schreiben, um das Min / Max zu finden, aber ich würde gerne verstehen, wie man …
75 c++  vector  max  min 


12
RAII gegen Garbage Collector
Ich habe kürzlich einen großartigen Vortrag von Herb Sutter über "Leak Free C ++ ..." auf der CppCon 2016 gesehen, in dem er über die Verwendung intelligenter Zeiger zur Implementierung von RAII (Ressourcenerfassung ist Initialisierung) - Konzepte und deren Lösung der meisten Probleme mit Speicherlecks sprach. Jetzt habe ich mich …

6
Unterschied zwischen uint8_t, uint_fast8_t und uint_least8_t
Der C99-Standard führt die folgenden Datentypen ein. Die Dokumentation zur AVR-Standardbibliothek finden Sie hier . uint8_t bedeutet, dass es sich um einen 8-Bit-Typ ohne Vorzeichen handelt. uint_fast8_t bedeutet, dass es das schnellste int ohne Vorzeichen mit mindestens 8 Bit ist. uint_least8_t bedeutet, dass es sich um ein Int ohne Vorzeichen …
75 c++  c  integer  avr  c99 


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.