In Search for better free to-do list..

Google Tasks
no subtasks (make new list)
no sharing (shared calendar?)
great android apps
gsyncit license for outlook sync
Stuck with it for now 🙁

Todoist
if by mistake task Completed, you can’t see it again in free account
cannot import or export in free account, so basically can’t move from another system easily

Toodledo
No sharing in free account

ticktick
free, nice app, can share
no view of subtasks created
no import or export, but print option
no advantage over Google Tasks since no subtasks views and no outlook

Requirements
Goals with subtasks and tracking
sharing option, not compulsory though
outlook sync

C++ Strings…

Strings are objects that represent sequences of characters.

Basic Code

Find substring, last substring find, compare

STL vector set

Vector

SET
find, insert, erase

Other common set operations includes finding the union, intersection and difference between two sets.

c++ map basics..

MAP – KEY VALUE PAIR

Notes:

  • Maps are associative containers that store elements formed by a combination of a key value and a mapped value, following a specific order.
  • In a map, the key values are generally used to sort and uniquely identify the elements, while the mapped values store the content associated to this key.
  • Maps are typically implemented as binary search trees.
  • Maps keep value in order O(log n) and as such are slower than unordered_map which is o(1) lookup as in hashing.

Example:
map<string, int> Employees;

insert

Employees[“Charlie M.”]=3374;

Employees.insert(std::make_pair(“Peter Q.”, 5328));

size

Employees.size()

iterate

for (map<string, int>::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)

{

cout<<(*ii).first<<“: “<<(*ii).second<<endl;

}

or,

cout << Employees[“Charlie M.”] << endl;

find (returns iterator)

map<const char*, int, ltstr>::iterator cur  = Employees.find(“june”);

if (cur  == Employees.end() )

std::cout << “not found”;

else

cout << “cur (in alphabetical order) is ” << (*cur).first << endl;

cur++;

cout << “cur next (in alphabetical order) is ” << (*cur).first << endl;

delete

mymap.erase (it);                   // erasing by iterator

mymap.erase (‘c’);                  // erasing by key

it=mymap.find (‘e’);

mymap.erase ( it, mymap.end() ); //range delete

custom comparison

    struct ltstr

    {

      bool operator()(const char* s1, const char* s2) const

      {

        return strcmp(s1, s2) < 0;

      }

    };

    map<const char*, int, ltstr> months;

Sample program

#include <iostream>

#include <utility>

#include <unordered_map>

using namespace std;

int main ()

{

unordered_map<char,int> mymap;

mymap.emplace(‘x’,100);
mymap.emplace(‘y’,200);
mymap.emplace(‘a’,100);
mymap.insert(make_pair(‘m’,100));

std::cout << “mymap contains:”;
for (auto& x: mymap)
std::cout << ” [” << x.first << ‘:’ << x.second << ‘]’;
std::cout << ‘\n’;

return 0;

}