I'm getting a strange error when trying to iterate a Map of Vectors. I'm using the Stanford CS106B class libraries for this project and when I try to compile the code I get an error telling me that "itr has no member named 'first' "
I have tried searching for solutions to this problem and I have found many similar entries but the answers seem to mimic what I'm doing. I'm sure I'm missing something simple...
#include <iostream>
#include <fstream>
#include <string>
#include "console.h"
#include "simpio.h"  // for getLine
#include "strlib.h"
#include "vector.h"
#include "queue.h"
#include "map.h"
#include <iterator>
using namespace std;
void CountLetters(ifstream &filename) {
    int index=0;
    Vector<int> counts;
    for (int i=0; i<=26; i++) {
        counts.add(0);
    }
    char c;
    while (!filename.eof()) {
        c=filename.get();
        index=c-'a';
        if (index>=0 && index<26) {
            c=stringToChar(toLowerCase(charToString(c)));
            counts[index]++;
        }
    }
    for (int y=0; y<=26; y++) {
        cout << char('a'+y) << ": " << counts[y] << endl;
    }
    filename.close();
}
Map <string, Vector<char> > assembleSets (ifstream &in, int seed) {
    Map <string, Vector<char> > letterSets;
    char c;
    Vector<char> workingText;
    string letterSet;
    while(!in.eof()) {
        if (workingText.size()<seed) {  // Build the intial set of "seed" letters.
            c=in.get();
            workingText.add(c);
        }
        else {
            c=in.get();
            letterSet.clear();
            for (int i=0; i<workingText.size()-1; i++) {
                letterSet+=workingText[i];  // add the letter to the letter set.
                workingText[i]=workingText[i+1]; // move the letter down one in the vector (simulate queue).
            }
            letterSet+=workingText[seed-1];
            workingText[seed-1]=c;  // add the newwest letter to the workingText but do not add it to the letter set.
            // Check to see if the letter set exists already, if not, add it.
            if (!letterSets.containsKey(letterSet)) {
                Vector<char> blank;
                letterSets.add(letterSet,blank);
                letterSets[letterSet].add(c);
            }
            else {
            // Add the next character to the vector of characters for that letter set.
            letterSets[letterSet].add(c);
            }
        }
    }
    return letterSets;
}
int main() {
    ifstream in;
    int mSeed =0;
    while (true) {
        string fileName = getLine("Please enter a file name");
        in.open(fileName);
        if(in.fail()) cout << "Couldn't open file!" << endl;
        else break;
    }
    // CountLetters(in);
    while (true) {
        mSeed=getInteger("Enter a seed value: ");
        if (mSeed>0&&mSeed<=10) {
            break;
        } else {
            cout << "Please choose a value from 1 to 10." << endl;
        }
    }
    Map<string, Vector<char> > letterSets = assembleSets(in, mSeed);
    Map<string, Vector<char> > :: iterator itr;
    for (auto& it: letterSets) {
       string keys = (it.first);
       Vector<char> values = it.second;
    }
    return 0;
}
Any help would be fantastic! I'm really scratching my head.
 
    