Вставить элемент в 2D вектор C ++

0

Я пытаюсь вставить элемент в эту двумерную векторную переменную, но я не уверен, как это сделать с этим странным векторным типом

void CaesarCypher::caesarAttack(string inputFileName, string frequencyFileName, string       outputFileName, string phiFile)
{
    vector<pair<char, double>> cipherTable = charFreqGen(inputFileName, outputFileName, numberDisplayed);
    vector<pair<char, double>> frequencyTable = charFreqGen(frequencyFileName, outputFileName, 150);
    vector<pair<int, double>> phiTable;

    for (int i = 0; i <= 94; i++)
    {
        double phi = 0.0;
        for (const auto& p : cipherTable)
        {
             char key = (char) ((int) p.first - i);
             auto find_it = find(frequencyTable.begin(), frequencyTable.end(), [key](const pair<char, double>& x) { return x.first == key; });
             double value;
             if (find_it != frequencyTable.end())
             {
                 value = find_it->second;
             }
             phi += p.second * value;
             //Insert a new element into the phiTable with the int parameter being i and the double paramter being phi
        }
    }
}

Место, которое я хочу вставить, указано с комментарием. Я хочу, чтобы значение я переместилось в целую часть пары и значение phi в двойную часть

Теги:
vector
2d

2 ответа

2
Лучший ответ

Чтобы создать std::pair вы можете использовать std::make_pair() в этом случае типы будут выведены автоматически:

phiTable.push_back(std::make_pair(i, phi));

Или вы сами можете указать типы:

phiTable.push_back(std::pair<int,double>(i, phi));
1
pair<int, double> t(i, phi);
phiTable.push_back(t);

Или

phiTable.push_back(std::make_pair<int, double>(i, phi));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню