我试图替换一个二维向量 (vector<vector<int>>
) 中的元素。我不仅想通过一个值来改变元素,而是通过一个列表,这意味着,例如,将 1,3,4,5,8,9
一一对应地更改为 1,2,3,4,5,6
。我已经用双重循环编写了非常慢的代码。是否有任何方法可以加快处理速度,使用新函数或对元素进行排序?因为我的二维向量非常大,实际上是3*300000。下面是我的示例代码:
int myints[] = { 1,3,4,5,8,9 };
int myints2[] = { 1,2,3,4,5,6 };
std::vector<int> vals (myints, myints+6);
std::vector<int> vals2 (myints2, myints2+6);
vector<vector<int>> V0(3);
V0[0]={1,4,5};
V0[1]={3,1,8};
V0[2]={1,9,4};
for (size_t j = 0; j < V0.size(); j++)
{
for (int i = 0; i < vals.size(); i++)
replace(V0[j].begin(), V0[j].end(), vals[i], vals2[i]);
};
理想的输出V0
应该是:
1 3 4
2 1 5
1 6 3
myints
中也不在V0中。你能否请再次检查示例输出。 - Chris PearceV0
的容量。我已经更改了示例代码,使其更清晰易懂。这只是一个'成对替换'。1变为1,3变为2,4变为3,5变为4,8变为5,而6则来自初始的9。 - Wei Zhang