Commit 52b0366a by Szeberényi Imre

v1

parent 1c066383
......@@ -30,6 +30,7 @@
</Build>
<Compiler>
<Add option="-pedantic" />
<Add option="-std=c++11" />
<Add option="-Wall" />
<Add option="-Werror" />
</Compiler>
......
/**
* \file ctor_dtor2.cpp
*
* Egyszerű osztályhierarchia az ctor/dtor hívási sorrendjének bemutatására.
* Az azonos feladatok végrehajtási sorrendje (pl. adattagok konstruktorhívása,
* vagy ősosztályok konstruktorának hívási sorrendje) a deklaráció sorrendjétől
* függ.
*/
#include <iostream>
#include <iostream>
/// Korábban használt makró, ami kiírja a paramétereit, majd változtatás nélkül kigenerálja azokat.
/// A kiírást egy tabulátorral kezdi és soremeléssel zárja.
/// Használatával elérhető, hogy a paraméterként adott utasítások, deklarációk a végrehajtás előtt
/// kiíródjanak a képernyőre. Így hatásuk jól megfigyelhető.
#define _(...) std::cout << "\t" << #__VA_ARGS__ << std::endl; __VA_ARGS__
using std::cout;
using std::cerr;
......@@ -99,9 +107,10 @@ struct A : NemVirtAlap1, NemVirtAlap2 {
};
int main() {
A* p = new A;
_( A* p = new A; )
cout << "Tovabb: ENTER" << endl;
cin.ignore(100, '\n');
delete p;
_( delete p; )
return 0;
}
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="kodreszletek" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin/Debug/kodreszletek" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/kodreszletek" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-std=c++11" />
<Add option="-Wall" />
</Compiler>
<Unit filename="kodreszletek.cpp" />
<Extensions>
<code_completion />
<envvars />
<debugger />
<lib_finder disable_auto="1" />
</Extensions>
</Project>
</CodeBlocks_project_file>
/**
* \file: kodreszletek.cpp
*
* Előadás diáin szereplő egyéb kódrészletek a tárolók és algoritmusok bemutatásához
*/
#include <iostream>
#include <iomanip>
#include <stdexcept>
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
/// Makró a kííráshoz:
/// Korábban használt makróhoz hasonló makró, ami kiírja a paramétereit, majd változtatás nélkül kigenerálja azokat.
/// A kiírást a soremeléssel kezdi és komment jellel zárja.
/// Használatával elérhető, hogy a paraméterként adott utasítások, deklarációk a végrehajtás előtt
/// kiíródjanak a képernyőre. Így hatásuk jól megfigyelhető.
#define _(...) std::cout << std::endl << std::setw(50) << std::left << #__VA_ARGS__ << "// "; __VA_ARGS__
using std::cout;
using std::cerr;
using std::cin;
using std::endl;
struct Base {
int a;
Base(int i) :a(0) {};
int f() { return a;}
};
// Der az inicializáló listán hívja Base függvényét,
// amely a Base adattagját adja vissza, de ez még nem inicailizálódott!!!!
struct Der : Base {
int b;
Der() : Base(b = f()) {
cout << b << endl;;
}
};
int hibas_osztaly() {
cout << "Mit ir ki? ";
cout << "Nem tudjuk!" << endl;
Der d; /// mit ír ki ?
return 0;
}
template <typename C> // Segédsablon a példákhoz
void print(C& co, const char* sep = ",") {
for (typename C::iterator it = co.begin(); it != co.end(); ++it )
std::cout << *it << sep;
}
template <typename C> // Segédsablon a példákhoz
void reverse_print(C& co, const char* sep = ",") {
for (typename C::reverse_iterator it = co.rbegin();
it != co.rend(); ++it )
std::cout << *it << sep;
}
int tarolok() {
_( std::list<int> ilist1, ilist2(100); )
_( ilist1.assign(5, 3); )
_( ilist2.assign(ilist1.begin(), ilist1.end()); )
_( cout << ilist2.size(); ) // 5
_( print(ilist2, ", " ); ) // 3, 3, 3, 3, 3,
_( std::vector<int> ivec(ilist2.begin(), ilist2.end());)
_( ivec[0] = 6;)
_( cout << ivec.front(); )// 6)
_( cout << ivec.back(); )// 3)
_( char duma[] = "HELLO";)
_( std::vector<char> cv(duma, duma+5);)
_( reverse_print(cv, "");) // OLLEH
_( cv.insert(cv.end(), ' ');)
_( cv.insert(cv.end(), duma, duma+5);)
_( print(cv, "");) // HELLO HELLO
_( cv.insert(cv.begin(), 3, '*') ;)
_( print(cv, "");) // ***HELLO HELLO
_( std::deque<int> iq1, iq2;)
_( iq1.push_back(3); iq1.push_back(4);)
_( iq1.push_back(8);iq1.push_back(10);)
_( iq1.push_back(2);iq1.push_back(7);)
_( cout << iq1.front(); ) // 3)
_( print(iq1); ) // 3,4,8,10,2,7,)
_( iq1.pop_back();)
_( print(iq1); ) // 3,4,8,10,2,)
_( iq1.erase(iq1.begin()+1);)
_( print(iq1); )// 3,8,10,2,)
_( iq1.erase(iq1.begin()+1, iq1.end());)
_( print(iq1); ) // 3,)
_( std::set<int> set1, set2;)
_( set1.insert(4);)
_( set1.insert(3);)
_( cout << set1.count(3);)
_( set1.insert(3);)
_( set1.insert(10);)
_( print(set1); ) // 3,4,10)
_( if (set1.find(4) != set1.end()))
_( cout << "megvan"; ) // megvan)
_( std::set<int>::iterator it;)
_( it = set1.lower_bound(4); ) // 4)
_( cout << *it;)
_( it = set1.upper_bound(4); ) // 10)
_( cout << *it;)
_( typedef std::set<int>::iterator myiter;)
_( std::pair<myiter, myiter> rit;)
_( rit = set1.equal_range(4);)
_( cout << *rit.first << ":" << *rit.second;) // 4:10
_( std::list<int> il(2, -3); )
_( il.push_front(9); )
_( il.push_back(2); )
_( il.sort(); )
_( print(il); ) // -3, -3, 2, 9,
_( il.unique(); )
_( std::list<int> il2(3, 4); )
_( il.merge(il2); )
_( print(il); ) // -3, 2, 4, 4, 4, 9,
_( std::deque<int> dq; )
_( dq.push_back(6); )
_( dq.push_front(9); )
_( print(dq); ) // 9, 6,
_( dq.resize(6, -3); )
_( print(dq); ) //9, 6, -3, -3, -3,-3,
_( dq.back() = 1; )
_( print(dq); ) // 9, 6, -3, -3, -3, 1,
_( dq[2] = 2; )
_( print(dq); ) // 9, 6, 2, -3, -3, 1,
_( dq.at(3) = 0; )
_( if (!dq.empty()) print(dq);) // 9, 6, 2, 0, -3, 1,
_( return 0;)
}
int main() {
_( hibas_osztaly(); )
tarolok();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment