我试图创建一个动态的2d std :: string向量,但无法添加新行:
std::vector<std::vector<std::string>> hops_vector;
int Hop = 0;
for (Hop = 0; Hop < RouteHops; Hop++)
{
char HopIPString[20];
HopIPString[0] = 0;
RouteTestGetHopTimedOut(TestHandle, Hop, &HopTimedOut);
std::string thehop = std::to_string(Hop + 1);
//If the hop hasn't been registered yet
if (hopsstring.find(thehop) == std::string::npos) {
vector<int> row; // Create an empty row
hopsstring += thehop+","; // Add hop number to hop string
//Add columns for pings per hop + IP and Loss/No Loss
for (int j = 0; j < PingsPerHop+2; j++) {
row.push_back(j); // Add an element (column) to the row
}
hops_vector.push_back(row); // Add the row to the main vector
hops_vector[Hop][0] = thehop;
}
}
行hops_vector.push_back(row);
给了我一个没有重载错误的例子。我假设因为hops_vector是一个std :: string向量。将它更改为int可以解决该问题,但是我无法将字符串添加到向量中!
答案 0 :(得分:0)
来自评论:
修复编译器错误的简单方法是将vector<int> row;
替换为std::vector<std::string> row(PingsPerHop+2, "");
(创建一个填充&#34的向量;空&#34;字符串)并删除for
循环试图填补它。
然而,由于@PaulMcKenzie使用std::map<std::string, std::vector<int>>
指出了一种不同的方法,其中字符串是跳数,并且包含与之关联的整数的向量(最有可能)是一种更好的方法(效率和概念上)