まずは基礎からやりましょう。
「C++ 入門」とかでググりましょう。
今回はそれだけで事足ります。
vector<string>::iterator it_num;
単純に string用のvectorのイテレータ。それだけです。
名前が it_num になっているのはちょっと気になりますが、それだけです。
[追記1]
すみません。宣言時の::iterator がつくと何が生成されてるのか
を記載したかったです。
実際のコード(実装)は見たことないですが、ここのようになっているようです。
friendなクラスをイテレータとして定義して、こいつを介してメンバ変数にアクセスする。
このイテレータ系を使うやつは主にコンテナ系です。
(後はアルゴリズム系の関数とか)
たとえばstd::vectorであれば内部で動的配列を保持しています。
まあ、これの場合は単なる配列の動的版なので arr[i] のようにランダムアクセスすればいいだけですが、
std::listの場合はそうもいきません。
std::listは内部でリスト構造のデータ列を持っています。
データ構造とアルゴリズムを学んでいればわかるはずですが、リスト構造はランダムアクセスができません。
そこで イテレータと呼ばれる、ポインタのような動きをする(と言われている)やつを介してアクセスします。
つまり、
vector<string>::iterator it_num;
はstring用のvectorのためのイテレータが生成されています。
これによって、リスト構造とかのような、ランダムアクセスができないデータ構造でもデータを取り出したり出来ます。