I'll eventually get to understand C++14, but for now I'm focusing on C++11.
One of the gems that I found in The C++ Programming Language, Fourth Edition is the range-for-statement (page 233 in the softcover edition, section 9.5.1), which trims down like 50 characters of code down to 10 characters.
#include <vector>
using std::vector;
#include <set>
using std::set;
#include <iostream>
using std::cout;
using std::endl;
int vecsum(const vector<int> &v)
{
int s = 0;
for(int x : v)
s += x;
return s;
}
int vecsum2(const vector<int> &v)
{
int s = 0;
for(vector<int>::const_iterator i = v.begin(); i != v.end(); i++)
s += *i;
return s;
}
int setsum(const set<int> &s)
{
int sum = 0;
for(int x : s)
sum += x;
return sum;
}
int setsum2(const set<int> &s)
{
int sum = 0;
for(set<int>::const_iterator i = s.begin(); i != s.end(); i++)
sum += *i;
return sum;
}
int main(void)
{
vector<int> v;
v.push_back(1);
v.push_back(3);
v.push_back(5);
v.push_back(7);
v.push_back(9);
v.push_back(11);
cout << vecsum(v) << endl;
cout << vecsum2(v) << endl;
set<int> s;
s.insert(1);
s.insert(3);
s.insert(5);
s.insert(7);
s.insert(9);
s.insert(11);
cout << setsum(s) << endl;
cout << setsum2(s) << endl;
return 0;
}
Do you know of other gems?