Slides:
#include <fstream>
std::ifstream in_file('file.txt');
std::string line;
while(std::getline(in_file, line)){
// Do something with 'line'
}
in_file.close();
#include <vector>
Init a vector:
std::vector<int> vec;
// init with N empty string
std::vector<std::string> vec(N);
// init with N zeros
std::vector<size_t> vec(N, 0);
Add an element (emplace_back):
// makes a copy of the new element and moves it to the back
vec.push_back('one element');
// makes a copy of the new element directly at the back (better for objects?)
vec.emplace_back(another_vector);
Loop over a vector:
for(unsigned int ii=0; ii<vec.size(); ii++){
// LOOP ACTION on vec[ii]
}
for(auto elt: vec){
// LOOP ACTION on element elt
}
Sort a vector:
#include <algorithm>
// ascending order by default
std::sort(vec.begin(), vec.end());
// descending order
std::sort(vec.begin(), vec.end(), std::greater<size_t>());
Remove elements of a vector (efficiently-ish) (erase):
auto it = vec.begin();
while (it != vec.end()) {
if (CONDITION){
// let's say we want to remove this element
it = vec.erase(it);
} else {
it++;
}
}
Check if something is in a vector (find):
bool value_in_vec = vec.find(value) != vec.end();
Misc:
// get size
vec.size();
// is the vector empty?
vec.empty();
// get the last element
vec.back();
// remove the last element
vec.pop_back();
// remove all elements
vec.clear();
// to allocate memory for N elements
vec.reserve(N);
vec.resize(N);
std::unordered_map<std::string,std::double> map_obj;
map_obj['key1'] = 1.3;
// check if a key is in the map
if(map_obj.count('key2') > 0)){
// something with map_obj['key2'] ?
}
// iterate over key/value pairs
for(auto iter=map_obj.begin(); iter!=map_obj.end(); iter++){
// iter->first contains the key
// iter->secong contains the value
}
std::unordered_set<std::string> set_obj;
set_obj.insert(item1');
// check if an item is in the set
if(set_obj.find(item1') != set_obj.end()){
// do something
}
// iterate over items
for(auto item : set_obj) {
// do something with item
}
.length()atoi(str_obj.c_str());atof(str_obj.c_str());str_obj.find("pattern") == std::string::nposstr_obj.substr(3, 7)str_obj.insert(10, "INSERT")std::vector<std::string> split_str(std::string in_str, std::string delim="\t"){
std::vector<std::string> line_v;
auto f_start = 0U;
auto f_end = in_str.find(delim);
while (f_end != std::string::npos)
{
line_v.push_back(in_str.substr(f_start, f_end - f_start));
f_start = f_end + delim.length();
f_end = in_str.find(delim, f_start);
}
line_v.push_back(in_str.substr(f_start, in_str.size()));
return line_v;
}