学习C ++示例问题

时间:2009-08-24 11:04:32

标签: c++

我目前正在阅读通过阅读编程书籍学习C ++的过程。我理解这个概念,但在阅读后几天发现,概念开始偏离我的记忆。

唯一让他们留在那里的是通过示例/问题。

是否有任何可以推荐的好网站或书籍可以提供大量的示例/问题,并解释每个示例应该有助于您学习的内容?

4 个答案:

答案 0 :(得分:4)

This sitethis site可能值得找你。

答案 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();
}




*/
相关问题