C++11 standartları ile kapatılan eksikliklerden biri de next ve prev algoritmaları. Adımlayıcılar (iterator) üzerinde çalışan bu algoritmaları anlayabilmek için önce ihtiyaç noktasını görmemiz gerekiyor.
Etiket: STL
any_of, all_of, none_of algoritmaları
C++11 ile gelen basit ama faydalı 3 algoritma. any_of algoritmasıyla bir aralık (range) içindeki değerlerden herhangi birinin bir koşulu sağlayıp sağlamadığını sınayabiliyoruz:
1 2 |
template<class InIter, class UnPred> bool any_of(InIter first, InIter last, UnPred f); |
Şablondan
stack sınıf şablonu
Öğe olarak aldıkları bir STL kabını kullanarak belirli bir soyut veri tipi (abstract data type) arayüzü sunan sınıf şablonlarına STL, kap uyumlandırıcıları (container adapters)
C++ çalışma sorusu – 50
Elimizde bir tamsayı vector‘ü var. Bu vector‘den hareketle aynı öğe sayısına sahip bir başka tamsayı vector‘ü oluşturmamız gerekiyor. Oluşturacağımız vector‘un her bir öğesi kaynak
C++ çalışma sorusu – 49
Elimizde küçükten büyüğe sıralı bir tamsayı vector‘ü var. Bu vector içinde [0 – 99] aralığında bulunan n tane tamsayı tutuluyor. n değeri 0 dahil
string’deki tüm karakterler eşsiz mi?
Elimizde std::string sınıfı türünden bir nesne var. Bu string nesnesinin tuttuğu yazının tüm karakterlerinin eşsiz (unique) olup olmadığını sınayan bir işlev yazmamız isteniyor. İşlevimiz gönderilen
C++ çalışma sorusu – 48
Elimizde yalnızca küçük harf karakterlerinden oluşan bir string var:
1 |
aayyyttxpeeeemmiiuuuuutee |
Böyle bir stringi aşağıdaki gibi stringe dönüştürmek istiyoruz:
1 |
a2y3t2x1p1e4m2i2u5t1e2 |
stringe eklenen rakam karakterleri ardışık
sözlük üzerinde stl uygulamaları – 3
Elimizde bulunan belirli sayıda harf ile oluşturulabilecek ingilizce sözlüğümüzde yer alan tüm sözcükleri bulan bir program yazıyoruz. Örneğin sözlüğümüzde bulunan sözcüklerden “ankara” harfleriyle oluşturabileceklerimiz şunlar:
1 2 3 |
ankara, kanara, arank, rakan, akan, akra, arak, arna, kana, karn, knar, kran, krna, nark, rana, rank, aaa, aka, ana, ara, ark, arn, kan, kra, naa, nak, nar, ran, aa, ak, an, ar, ka, kn, kr, na, nr, ra, rn, a, k, n, r, p |
sözlük üzerinde stl uygulamaları – 2
Bu kez ingilizce sözlüğümüzde bulunan tüm palindrom sözcükleri buluyoruz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include <fstream> #include <iostream> #include <vector> #include <set> #include <string> #include <algorithm> #include <iterator> using namespace std; bool ispal(const string &r) { string s{ r }; reverse(s.begin(), s.end()); return s == r; } struct LenPred { bool operator()(const string &r1, const string &r2)const { return r1.size() > r2.size() || r1.size() == r2.size() && r1 < r2; } }; int main() { ifstream ifs{"dict.txt"}; if (!ifs) { cerr << "dosya acilamadi" << endl; return 1; } vector<string> svec{ istream_iterator<string>{ifs}, istream_iterator<string>{} }; set<string, LenPred> palset; copy_if(svec.begin(), svec.end(), inserter(palset, palset.begin()), &ispal); copy(palset.begin(), palset.end(), ostream_iterator<string>{cout, "\n"}); return 0; } |
Daha önceki çalışmamızda olduğu gibi önce dosyamızdaki tüm sözcükleri içeren svec isimli bir vector
sözlük üzerinde stl uygulamaları – 1
Elimizde ingilizce’deki tüm sözcükleri içeren bir ASCII metin dosyası var. Dosyanın ismi dict.txt. Dosyamızın her satırında bir sözcük yer alıyor ve toplamda 354.935 sözcüğümüz var.