#include <iostream>
#include <algorithm>
#define Repeat do{
#define Until(cond) }while(!(cond))
void printer(int i)
{
std::cout<<i<<" ";
}
int main()
{
int i = 0;
//Simulating Pascal/Delphi's repeat until loop.
//This loop will run once and then check the condition.
//After that, it will continue again if the condition is true.
Repeat
std::cout<<i<<" ";
++i;
Until(i == 10);
i = 0;
std::cout<<"\n";
//will only run while this condition is true.. i must be less than 10 for the loop to start and continue.
//in other words, the loop will only start and continue if the condition is true.
while (i < 10)
{
std::cout<<i<<" ";
++i;
}
std::cout<<"\n";
i = 0;
//will run at least once. The condition is checked after the first run.
//If it is true, the loop will run again and continue running while the condition is true.
do
{
std::cout<<i<<" ";
++i;
} while(i < 10);
std::cout<<"\n";
i = 0;
//sets the initial value of J to 0.
//While (J < 10) the loop will run.
//At the end of each iteration, J is incremented.
for (int j = 0; j < 10; ++j)
{
std::cout<<j<<" ";
}
std::cout<<"\n";
//You must be using a C++11 compiler to use any of the following loops!!
int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
//for each integer in arr, call lambda function and pass that integer as an argument.
//in this case, the function is [](int i) { std::cout<<i<<" "; }
std::for_each(&arr[0], &arr[10], [](int i) {std::cout<<i<<" ";});
std::cout<<"\n";
//same as above.. for each integer in arr, call the printer function and pass that integer
//as an argument. Thus every loop it does: printer(i); where i is an integer in arr array.
std::for_each(&arr[0], &arr[10], printer);
std::cout<<"\n";
//for-ranged loop.
//for each integer in arr, copy the value to variable i and print it.
for(int i : arr)
{
std::cout<<i<<" ";
}
std::cout<<"\n";
//for each integer in arr, do NOT copy the value. Instead, reference it and print it.
//this allows you to be able to change the value of i and it'd change the value in the array.
for (int &i : arr)
{
std::cout<<i<<" ";
}
std::cout<<"\n";
//for each "something" in "some array", copy it to variable i and print it.
for (auto i : arr)
{
std::cout<<i<<" ";
}
std::cout<<"\n";
//for each "something" in "some array", do NOT copy it. Reference it and print it.
for (auto &i : arr)
{
std::cout<<i<<" ";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKI2RlZmluZSBSZXBlYXQgZG97CiNkZWZpbmUgVW50aWwoY29uZCkgfXdoaWxlKCEoY29uZCkpCgp2b2lkIHByaW50ZXIoaW50IGkpCnsKICAgIHN0ZDo6Y291dDw8aTw8IiAiOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBpID0gMDsKICAgIAogICAgLy9TaW11bGF0aW5nIFBhc2NhbC9EZWxwaGkncyByZXBlYXQgdW50aWwgbG9vcC4KICAgIC8vVGhpcyBsb29wIHdpbGwgcnVuIG9uY2UgYW5kIHRoZW4gY2hlY2sgdGhlIGNvbmRpdGlvbi4KICAgIC8vQWZ0ZXIgdGhhdCwgaXQgd2lsbCBjb250aW51ZSBhZ2FpbiBpZiB0aGUgY29uZGl0aW9uIGlzIHRydWUuCiAgICBSZXBlYXQKICAgICAgICBzdGQ6OmNvdXQ8PGk8PCIgIjsKICAgICAgICArK2k7CiAgICBVbnRpbChpID09IDEwKTsKCiAgICBpID0gMDsKICAgIHN0ZDo6Y291dDw8IlxuIjsKCiAgICAvL3dpbGwgb25seSBydW4gd2hpbGUgdGhpcyBjb25kaXRpb24gaXMgdHJ1ZS4uIGkgbXVzdCBiZSBsZXNzIHRoYW4gMTAgZm9yIHRoZSBsb29wIHRvIHN0YXJ0IGFuZCBjb250aW51ZS4KICAgIC8vaW4gb3RoZXIgd29yZHMsIHRoZSBsb29wIHdpbGwgb25seSBzdGFydCBhbmQgY29udGludWUgaWYgdGhlIGNvbmRpdGlvbiBpcyB0cnVlLgogICAgd2hpbGUgKGkgPCAxMCkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQ8PGk8PCIgIjsKICAgICAgICArK2k7CiAgICB9CgogICAgc3RkOjpjb3V0PDwiXG4iOwogICAgaSA9IDA7CgogICAgLy93aWxsIHJ1biBhdCBsZWFzdCBvbmNlLiBUaGUgY29uZGl0aW9uIGlzIGNoZWNrZWQgYWZ0ZXIgdGhlIGZpcnN0IHJ1bi4KICAgIC8vSWYgaXQgaXMgdHJ1ZSwgdGhlIGxvb3Agd2lsbCBydW4gYWdhaW4gYW5kIGNvbnRpbnVlIHJ1bm5pbmcgd2hpbGUgdGhlIGNvbmRpdGlvbiBpcyB0cnVlLgogICAgZG8KICAgIHsKICAgICAgICBzdGQ6OmNvdXQ8PGk8PCIgIjsKICAgICAgICArK2k7CiAgICB9IHdoaWxlKGkgPCAxMCk7CgogICAgc3RkOjpjb3V0PDwiXG4iOwogICAgaSA9IDA7CgogICAgLy9zZXRzIHRoZSBpbml0aWFsIHZhbHVlIG9mIEogdG8gMC4KICAgIC8vV2hpbGUgKEogPCAxMCkgdGhlIGxvb3Agd2lsbCBydW4uCiAgICAvL0F0IHRoZSBlbmQgb2YgZWFjaCBpdGVyYXRpb24sIEogaXMgaW5jcmVtZW50ZWQuCiAgICBmb3IgKGludCBqID0gMDsgaiA8IDEwOyArK2opCiAgICB7CiAgICAgICAgc3RkOjpjb3V0PDxqPDwiICI7CiAgICB9CgogICAgc3RkOjpjb3V0PDwiXG4iOwoKCgoJLy9Zb3UgbXVzdCBiZSB1c2luZyBhIEMrKzExIGNvbXBpbGVyIHRvIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBsb29wcyEhCgkKICAgIGludCBhcnJbXSA9IHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5fTsKCgkvL2ZvciBlYWNoIGludGVnZXIgaW4gYXJyLCBjYWxsIGxhbWJkYSBmdW5jdGlvbiBhbmQgcGFzcyB0aGF0IGludGVnZXIgYXMgYW4gYXJndW1lbnQuCgkvL2luIHRoaXMgY2FzZSwgdGhlIGZ1bmN0aW9uIGlzIFtdKGludCBpKSB7ICBzdGQ6OmNvdXQ8PGk8PCIgIjsgIH0KICAgIHN0ZDo6Zm9yX2VhY2goJmFyclswXSwgJmFyclsxMF0sIFtdKGludCBpKSB7c3RkOjpjb3V0PDxpPDwiICI7fSk7CiAgICBzdGQ6OmNvdXQ8PCJcbiI7CgoKICAgIC8vc2FtZSBhcyBhYm92ZS4uIGZvciBlYWNoIGludGVnZXIgaW4gYXJyLCBjYWxsIHRoZSBwcmludGVyIGZ1bmN0aW9uIGFuZCBwYXNzIHRoYXQgaW50ZWdlcgogICAgLy9hcyBhbiBhcmd1bWVudC4gVGh1cyBldmVyeSBsb29wIGl0IGRvZXM6ICBwcmludGVyKGkpOyB3aGVyZSBpIGlzIGFuIGludGVnZXIgaW4gYXJyIGFycmF5LgogICAgc3RkOjpmb3JfZWFjaCgmYXJyWzBdLCAmYXJyWzEwXSwgcHJpbnRlcik7CiAgICBzdGQ6OmNvdXQ8PCJcbiI7CgoJLy9mb3ItcmFuZ2VkIGxvb3AuCgkvL2ZvciBlYWNoIGludGVnZXIgaW4gYXJyLCBjb3B5IHRoZSB2YWx1ZSB0byB2YXJpYWJsZSBpIGFuZCBwcmludCBpdC4KICAgIGZvcihpbnQgaSA6IGFycikKICAgIHsKICAgICAgICBzdGQ6OmNvdXQ8PGk8PCIgIjsKICAgIH0KCiAgICBzdGQ6OmNvdXQ8PCJcbiI7CgoKCS8vZm9yIGVhY2ggaW50ZWdlciBpbiBhcnIsIGRvIE5PVCBjb3B5IHRoZSB2YWx1ZS4gSW5zdGVhZCwgcmVmZXJlbmNlIGl0IGFuZCBwcmludCBpdC4KCS8vdGhpcyBhbGxvd3MgeW91IHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBpIGFuZCBpdCdkIGNoYW5nZSB0aGUgdmFsdWUgaW4gdGhlIGFycmF5LgogICAgZm9yIChpbnQgJmkgOiBhcnIpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0PDxpPDwiICI7CiAgICB9CgogICAgc3RkOjpjb3V0PDwiXG4iOwogICAgCiAgICAKICAgIC8vZm9yIGVhY2ggInNvbWV0aGluZyIgaW4gInNvbWUgYXJyYXkiLCBjb3B5IGl0IHRvIHZhcmlhYmxlIGkgYW5kIHByaW50IGl0LgogICAgZm9yIChhdXRvIGkgOiBhcnIpCiAgICB7CiAgICAJc3RkOjpjb3V0PDxpPDwiICI7CiAgICB9CiAgICAKICAgIHN0ZDo6Y291dDw8IlxuIjsKICAgIAoKICAgIC8vZm9yIGVhY2ggInNvbWV0aGluZyIgaW4gInNvbWUgYXJyYXkiLCBkbyBOT1QgY29weSBpdC4gUmVmZXJlbmNlIGl0IGFuZCBwcmludCBpdC4KICAgIGZvciAoYXV0byAmaSA6IGFycikKICAgIHsKICAgICAgICBzdGQ6OmNvdXQ8PGk8PCIgIjsKICAgIH0KfQo=