1
1
---
2
2
layout : post
3
3
title : " STL Madenleri: Modern C++'ın Derinliklerine Doğru Bir Kazı"
4
- date : 2025-02-24 20:46:12 +0300
4
+ date : 2025-02-28 20:46:12 +0300
5
5
categories : [programlama]
6
- image : " 2025-02-24 -cpp-madenleri.jpeg"
6
+ image : " 2025-02-28 -cpp-madenleri.jpeg"
7
7
image_hash : " 3bde78199468d6affeb6539c56af87c9"
8
8
---
9
9
@@ -56,17 +56,17 @@ azalır.
56
56
- ** ` try_emplace ` ** : C++17 ile tanıtılan bu özellik, var olan bir elemanı güncellemeden yeni bir eleman ekleme işlemini
57
57
birleştirir.
58
58
59
- ```cpp
60
- #include <map>
61
- #include <string>
59
+ ``` cpp
60
+ #include < map>
61
+ #include < string>
62
62
63
- int main() {
64
- std::map<int, std::string> myMap;
65
- myMap.try_emplace(1, "İlk Eleman"); // Eğer anahtar yoksa ekler
66
- myMap.try_emplace(1, "Yoksayılır"); // Anahtar mevcut olduğu için eklenmez
67
- return 0;
68
- }
69
- ```
63
+ int main () {
64
+ std::map<int, std::string> myMap;
65
+ myMap.try_emplace(1, "İlk Eleman"); // Eğer anahtar yoksa ekler
66
+ myMap.try_emplace(1, "Yoksayılır"); // Anahtar mevcut olduğu için eklenmez
67
+ return 0;
68
+ }
69
+ ```
70
70
71
71
---
72
72
@@ -78,50 +78,50 @@ Modern C++'ta, belirli ihtiyaçlara yönelik yeni konteynerler tanıtılmıştı
78
78
79
79
- STL konteyner benzeri davranış sergileyen sabit boyutlu bir dizi oluşturmaya yarar.
80
80
81
- ``` cpp
82
- #include < array>
83
- #include < iostream>
81
+ ``` cpp
82
+ #include < array>
83
+ #include < iostream>
84
84
85
- int main () {
86
- std::array<int, 3> arr = {1, 2, 3};
87
- for (auto x : arr) {
88
- std::cout << x << " ";
89
- }
90
- return 0;
85
+ int main () {
86
+ std::array<int, 3> arr = {1, 2, 3};
87
+ for (auto x : arr) {
88
+ std::cout << x << " ";
91
89
}
92
- ```
90
+ return 0;
91
+ }
92
+ ```
93
93
94
94
#### ** 2.2 ` std::forward_list ` **
95
95
96
96
Hafıza verimliliği ve ileri yönlü iterasyon için optimize edilmiş tek yönlü bağlı listedir.
97
97
98
- ```cpp
99
- #include <iostream>
100
- #include <forward_list>
101
-
102
- int main() {
103
- // Bir forward_list oluştur
104
- std::forward_list<int> flist = {1, 2, 3, 4, 5};
98
+ ``` cpp
99
+ #include < iostream>
100
+ #include < forward_list>
105
101
106
- // Elemanları yazdır
107
- std::cout << "Liste elemanları: ";
108
- for (int x : flist) {
109
- std::cout << x << " ";
110
- }
111
- std::cout << std::endl;
102
+ int main () {
103
+ // Bir forward_list oluştur
104
+ std::forward_list<int> flist = {1, 2, 3, 4, 5};
112
105
113
- // Listenin başına bir eleman ekle
114
- flist.push_front(0);
106
+ // Elemanları yazdır
107
+ std::cout << "Liste elemanları: ";
108
+ for (int x : flist) {
109
+ std::cout << x << " ";
110
+ }
111
+ std::cout << std::endl;
115
112
116
- std::cout << "Başına 0 eklendi: ";
117
- for (int x : flist) {
118
- std::cout << x << " ";
119
- }
120
- std::cout << std::endl;
113
+ // Listenin başına bir eleman ekle
114
+ flist.push_front(0);
121
115
122
- return 0;
116
+ std::cout << "Başına 0 eklendi: ";
117
+ for (int x : flist) {
118
+ std::cout << x << " ";
123
119
}
124
- ```
120
+ std::cout << std::endl;
121
+
122
+ return 0;
123
+ }
124
+ ```
125
125
126
126
#### ** 2.3 ` std::unordered_map ` ve ` std::unordered_set ` **
127
127
- C++11 ile tanıtılan bu hash tabanlı konteynerler, ` std::map ` ve ` std::set ` 'e kıyasla daha hızlı ortalama zaman
@@ -132,73 +132,73 @@ Hash tablosu kullandığı için arama, ekleme ve silme işlemleri ortalama O(1)
132
132
Elemanlar sıralı tutulmaz. Her anahtar yalnızca bir kez kullanılabilir. Aynı anahtarla ikinci bir ekleme, mevcut değeri günceller.
133
133
Hash tablosu için varsayılan olarak std::hash kullanır, ancak özelleştirilmiş bir hash fonksiyonu da belirtilebilir.
134
134
135
- ```cpp
136
- #include <iostream>
137
- #include <unordered_map>
135
+ ``` cpp
136
+ #include < iostream>
137
+ #include < unordered_map>
138
138
139
- int main() {
140
- // Bir unordered_map oluştur
141
- std::unordered_map<std::string, int> myMap;
139
+ int main () {
140
+ // Bir unordered_map oluştur
141
+ std::unordered_map<std::string, int> myMap;
142
142
143
- // Eleman ekle
144
- myMap["Ali"] = 25;
145
- myMap["Veli"] = 30;
146
- myMap["Ayşe"] = 28;
143
+ // Eleman ekle
144
+ myMap["Ali"] = 25;
145
+ myMap["Veli"] = 30;
146
+ myMap["Ayşe"] = 28;
147
147
148
- // Elemanları yazdır
149
- for (const auto& pair : myMap) {
150
- std::cout << pair.first << ": " << pair.second << std::endl;
151
- }
148
+ // Elemanları yazdır
149
+ for (const auto& pair : myMap) {
150
+ std::cout << pair.first << ": " << pair.second << std::endl;
151
+ }
152
152
153
- // Anahtar kullanarak bir değere erişim
154
- std::cout << "Ali'nin yaşı: " << myMap["Ali"] << std::endl;
153
+ // Anahtar kullanarak bir değere erişim
154
+ std::cout << "Ali'nin yaşı: " << myMap["Ali"] << std::endl;
155
155
156
- return 0;
157
- }
158
- ```
156
+ return 0;
157
+ }
158
+ ```
159
159
160
160
#### ** 2.4 ` std::deque ` **
161
161
162
162
- Her iki uçtan verimli ekleme ve silme işlemlerini destekleyen çift uçlu bir kuyruk.
163
163
164
- ``` cpp
165
- #include < iostream>
166
- #include < deque>
164
+ ``` cpp
165
+ #include < iostream>
166
+ #include < deque>
167
167
168
- int main () {
169
- // Bir deque oluştur
170
- std::deque<int> dq = {1, 2, 3};
171
-
172
- // Elemanları yazdır
173
- std::cout << "Deque başlangıç durumu: ";
174
- for (int x : dq) {
175
- std::cout << x << " ";
176
- }
177
- std::cout << std::endl;
178
-
179
- // Başa ve sona eleman ekle
180
- dq.push_front(0);
181
- dq.push_back(4);
182
-
183
- std::cout << "Başa 0, sona 4 eklendi: ";
184
- for (int x : dq) {
185
- std::cout << x << " ";
186
- }
187
- std::cout << std::endl;
188
-
189
- // Baştan ve sondan eleman sil
190
- dq.pop_front();
191
- dq.pop_back();
192
-
193
- std::cout << "Baştan ve sondan eleman silindi: ";
194
- for (int x : dq) {
195
- std::cout << x << " ";
196
- }
197
- std::cout << std::endl;
168
+ int main () {
169
+ // Bir deque oluştur
170
+ std::deque<int> dq = {1, 2, 3};
198
171
199
- return 0;
172
+ // Elemanları yazdır
173
+ std::cout << "Deque başlangıç durumu: ";
174
+ for (int x : dq) {
175
+ std::cout << x << " ";
200
176
}
201
- ```
177
+ std::cout << std::endl;
178
+
179
+ // Başa ve sona eleman ekle
180
+ dq.push_front(0);
181
+ dq.push_back(4);
182
+
183
+ std::cout << "Başa 0, sona 4 eklendi: ";
184
+ for (int x : dq) {
185
+ std::cout << x << " ";
186
+ }
187
+ std::cout << std::endl;
188
+
189
+ // Baştan ve sondan eleman sil
190
+ dq.pop_front();
191
+ dq.pop_back();
192
+
193
+ std::cout << "Baştan ve sondan eleman silindi: ";
194
+ for (int x : dq) {
195
+ std::cout << x << " ";
196
+ }
197
+ std::cout << std::endl;
198
+
199
+ return 0;
200
+ }
201
+ ```
202
202
203
203
204
204
### ** 3. Polimorfik Bellek Kaynakları (` std::pmr ` )**
0 commit comments