Memodifikasi Algoritma
Pelajaran 21 dari 23 dalam kursus C++ - Standard Template Library di Coddy.
Dalam pelajaran ini, kamu akan mempelajari algoritma modifikasi yang tersedia di STL C++.
Algoritma modifikasi dirancang untuk mengubah nilai elemen di dalam container.
Kita akan membahas algoritma berikut:
copy()fill()move()swap()reverse()
Method copy()
Method copy() menyalin elemen dari rentang yang ditentukan oleh dua iterator ke rentang yang dimulai dari iterator ketiga.
vector<int> v1 = {1, 2, 3};
vector<int> v2;
copy(v1.begin(), v1.end(), v2.begin());
for(auto value : v1)
cout << value << " ";Output:
1 2 3Kita menggunakan method copy() untuk menyalin isi vector v1 ke vector v2.
Method fill()
Method ini menetapkan nilai yang diberikan ke setiap elemen dalam rentang yang ditentukan oleh dua iterator.
vector<int> numbers(10); // membuat vector kosong dengan 10 elemen
fill(numbers.begin(), numbers.end(), 1);
for(auto value : numbers)
cout << value << " ";
cout << endl;
fill(numbers.begin(), numbers.end() - 3, 2);
for(auto value : numbers)
cout << value << " ";Output:
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 1 1 1Method move()
Method ini memindahkan elemen dari container saat ini dan mengembalikan rvalue-nya.
vector<string> names;
string first = "John";
string second = "Max";
names.push_back(first);
names.push_back(move(second));
cout << first << endl;
cout << second << endl;
cout << names[1];Output:
John
MaxSeperti yang kamu lihat, method move() mengosongkan string, tetapi mengembalikan nilainya, lalu method push_back() memasukkan nilai tersebut ke dalam vector.
Method swap()
Method ini menukar elemen dari dua container dengan tipe yang sama.
vector<int> v1 = {1, 2, 3};
vector<int> v2 = {4, 5, 6};
for(auto value : v1)
cout << value << " ";
for(auto value : v2)
cout << value << " ";
cout << endl;
swap(v1, v2);
for(auto value : v1)
cout << value << " ";
for(auto value : v2)
cout << value << " ";Output:
1 2 3 4 5 6
4 5 6 1 2 3Method reverse()
Method ini membalik urutan elemen dalam satu container, lebih tepatnya dalam rentang yang ditentukan oleh dua iterator.
vector<int> a = {1, 2, 3, 4, 5};
for(auto value : a)
cout << value << " ";
cout << endl;
reverse(a.begin(), a.end());
for(auto value : a)
cout << value << " ";Output:
1 2 3 4 5
5 4 3 2 1
Coba sendiri
Pelajaran ini tidak memiliki tantangan kode.
Semua pelajaran di C++ - Standard Template Library
Latihan sendiri: Compiler C++ online