将元素插入 2D 矢量C++
Insert an element into a 2D vector C++
我正在尝试将一个元素插入到这个 2D 矢量变量中,但我不确定如何使用这种奇怪的矢量类型来做到这一点
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
}
}
}
我要插入的位置是用注释指定的。我希望 i 值进入对的整数部分,将 phi 值放入双精度部分
要创建std::pair
您可以使用std::make_pair()
在这种情况下,将自动推断类型:
phiTable.push_back(std::make_pair(i, phi));
或者您可以自己指定类型:
phiTable.push_back(std::pair<int,double>(i, phi));
pair<int, double> t(i, phi);
phiTable.push_back(t);
或
phiTable.push_back(std::make_pair<int, double>(i, phi));
相关文章:
- 分段故障(堆芯转储)矢量
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 将二维矢量传递给类
- 读取文件并输入到矢量中
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 无法通过空白将文本文件行分隔为矢量
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 正在将csv文件读取为双精度矢量
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何通过 getter 函数删除矢量的元素?
- 如何在C++中将数组转换为矢量指针
- 在C++中将矢量转换为嵌套地图
- C++矢量迭代
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 将矢量<T>转换为矢量<数组<T>>
- 指针或结构的矢量
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 用于矢量处理的多个线程
- 反向矢量3
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中