我目前正在阅读通过阅读编程书籍学习C ++的过程。我理解这个概念,但在阅读后几天发现,概念开始偏离我的记忆。
唯一让他们留在那里的是通过示例/问题。
是否有任何可以推荐的好网站或书籍可以提供大量的示例/问题,并解释每个示例应该有助于您学习的内容?
答案 0 :(得分:4)
答案 1 :(得分:4)
如果你的书没有给你任务咀嚼,那就换好书。
看看提到的那些here。
答案 2 :(得分:2)
你没有说出你需要什么样的例子,显然选择对你有意义的例子很重要 - 也就是你可以看到它的价值的应用程序。
你能建议一些你感兴趣的话题吗?像商业应用程序或游戏,科学或其他?
答案 3 :(得分:0)
只是为了表达,一些例子,我尝试添加一些代码......
#include <iostream>
#include <string>
#include <list>
#include <vector>
#include <set>
#include <map>
#include <iterator>
#include <algorithm>
#include <iomanip>
#include <iostream>
using namespace std;
bool Porovnej(int &p1) {
if (p1 > 5)
{
return true;
}
return false;
}
struct osoba{
int vek;
string jmeno;
set<char> mnozinaPismen;
public:
void Vypis();
};
void osoba::Vypis() {
cout << vek << endl;
cout << jmeno << endl;
for (auto m : mnozinaPismen){
cout << m << endl;
}
cout << "" << endl;
};
int Vytrid(int &prvek) {
if(prvek !=30){
return prvek;
}
return -(prvek);
}
struct JaKralJeliman{
int vek;
string jmeno;
string titul;
public:
void Vypis();
};
void JaKralJeliman::Vypis() {
cout << vek << endl;
cout << titul << endl;
cout << jmeno << endl;
}
class Vytridit{
public:
int operator()(int &prvek) const{
if (prvek > 2) {
return prvek;
}
}
};
int Pricti(int &prvek){
prvek = prvek + 1;
return prvek;
}
class NasobeniHodnot {
private: int _hodnota;
public: NasobeniHodnot(int hodnota) :_hodnota(hodnota) {}
void operator() (int &prvek) const { prvek *= _hodnota; }
};
int GenerujPrvky(){
int prvek = 0;
prvek += rand();
return prvek;
}
class Pair {
private:
int _key, _value;
public:
int GetKey() const { return _key; }
int GetValue() const { return _value; }
void SetKey(int key) { _key = key; }
void SetValue(int value) { _value = value; }
};
istream& operator>>(istream &is, Pair &objekt) {
int cislo;
is >> cislo; /* Využiji již přetížených operátorů pro primitivní datové typy.*/
objekt.SetKey(cislo);
is >> cislo;
objekt.SetValue(cislo);
return is;
}
ostream& operator<<(ostream &os, const Pair &objekt) {
os << objekt.GetKey() << objekt.GetValue();
return os;
}
int main()
{
vector<int> v;
vector<int>::iterator it;
vector<int> v2(100);
vector<int> v3(10);
for (int i = 1; i < 10; i++)
{
v.push_back(i+1);
}
it = find(v.begin(), v.end(), 5);
cout << *it << endl;
back_inserter(v) = 30;
back_inserter(v) = 32;
back_inserter(v) = 32;
back_inserter(v) = 30;
back_inserter(v) = 30;
v.reserve(2 * v.size());
copy(v.begin(), v.end(), back_inserter(v));
copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
// for_each(v.begin(), v.end(), ostream_iterator<int>(cout));
it = min_element(v.begin(), v.end());
it = max_element(v.begin(), v.end());
int pocetTricitek = count(v.begin(), v.end(), 30);
cout << "Pocet hodnoty 30 v kontejneru v je:" << pocetTricitek << endl;
cout << "Nejvetsi hodnota" << *it <<endl;
it = find_if(v.begin(), v.end()-1, Porovnej);
cout << "Hodnota iteratoru:" << *it << endl;
it = search_n(v.begin(), v.end()-1, 3, 32);
cout << "Hodnota iteratoru:" << *it << endl;
transform(v.begin(), v.end(), v2.begin(), Vytrid);
fill_n(v3.begin(), 5, 10);
replace(v.begin(), v.end(), 30, 1); //nahradí číslo 30 číslem 1
reverse(v.begin(), v.end());
rotate(v.begin(), v.begin() + 3, v.end());
sort(v.begin(), v.end());
//partial_sort(v.begin(), v.begin() + 10, v.end());
it = lower_bound(v.begin(), v.end(), 15); //>= než 15
vector<int> kolekce(10);
generate(kolekce.begin(), kolekce.end(), GenerujPrvky);
NasobeniHodnot nh(2);
for_each(kolekce.begin(), kolekce.end(), nh);
for_each(kolekce.begin(), kolekce.end(), NasobeniHodnot(2));
int c = 1000, b = 9;
cout << setw(3) << "b=" << b << endl << "c=" << c << endl;
cout << setw(3) << setfill('@') << hex << "c=" << c;
cout << endl;
Pair pair;
cin >> pair;
cout << "Objekt byl:" << endl << pair;
system("pause");
return 0;
}
/*String
string s = "ahoj Oldo";
string::size_type idx;
int pocet = 0;
string s2("Ahoj karle", 6);
cout << s2;
idx = s.find("o");
cout << "idx:" << idx << "string s:" << s << endl;
if (idx == std::string::npos) {
cout << "Není obsažen v řetězci";
} else{
cout << "Je obsažen v řetězci na pozici:" << idx;
}
--------------------//////////////---------------------------
Kontejnery:
string pole[] = { "2", "50" ,"99", "1000" };
list<string> seznam(pole, pole+sizeof(pole)/sizeof(pole[0]));
vector<string> vektorRetezcu;
vektorRetezcu.push_back("a");
vektorRetezcu.push_back("b");
vektorRetezcu.push_back("c");
vektorRetezcu.push_back("d");
vektorRetezcu.push_back("e");
vektorRetezcu.push_back("e");
vektorRetezcu.push_back("a");
list<string> seznam2(vektorRetezcu.begin(), vektorRetezcu.end());
for (auto s : seznam2)
{
cout << s << endl;
}
swap(seznam, seznam2);
for (auto s : seznam2)
{
cout << s << endl;
}
string s1 = "ahoj";
string s2 = "olda";
cout << s1 << s2 << endl;
swap(s1, s2);
cout << s1 << s2 << endl;
--------------------////////////-/////----------------
List
list<osoba> listOsob;
osoba clovek;
for (int i = 0; i < 3; i++)
{
cout << "Zadej cloveka:" << endl;
cin >> clovek.jmeno;
cin >> clovek.prijmeni;
cin >> clovek.vek;
listOsob.push_back(clovek);
}
for (auto osoby : listOsob)
{
cout << "Clovek cislo " << endl;
cout << osoby.jmeno << endl;
}
///////////////////////////////////////////////---------------------mnozicn
struct osoba{
int vek;
string jmeno;
set<char> mnozinaPismen;
public:
void Vypis();
};
void osoba::Vypis() {
cout << vek;
cout << jmeno;
for (auto m : mnozinaPismen)
{
cout << m << endl;
}
}
int main()
{
vector<osoba> vectorLidi;
osoba clovek;
for (int i = 0; i < 3; i++)
{
cin >> clovek.vek;
cin >> clovek.jmeno;
for (int i = 0; i < clovek.jmeno.length(); i++)
{
clovek.mnozinaPismen.insert(clovek.jmeno[i]);
}
vectorLidi.push_back(clovek);
}
for (auto v : vectorLidi)
{
v.Vypis();
}
system("pause");
return 0;
}
-----------------////////////-------------------
vector<osoba> vectorLidi;
osoba clovek;
for (int i = 0; i < 3; i++)
{
cin >> clovek.vek;
cin >> clovek.jmeno;
for (int i = 0; i < clovek.jmeno.length(); i++)
{
clovek.mnozinaPismen.insert(clovek.jmeno[i]);
}
vectorLidi.push_back(clovek);
}
cout << "Nacte no -------------" << endl;
for (auto v : vectorLidi)
{
v.Vypis();
}
*/