gpt4 book ai didi

c++ - 从 map 中取出 Int 值并将它们迭代到二分图 C++

转载 作者:行者123 更新时间:2023-11-30 05:38:15 26 4
gpt4 key购买 nike

这对我来说相当复杂,希望对其他人来说不是。

我在 map 中有一组 256 键/值项。我通过 ifstream 从文本文件中将数据导入 map 。现在,我需要从映射中获取键/值对,并且需要使用这些数据点来创建一个二分映射图

我需要做的是遍历每个键和值,并将它们放入 bpGraph 中,格式如下:

bool bpGraph[V][V] = { {0, 0, 0, 1, 0, ect.... 0}, //Key 1 Value 4
{0, 2, 0, 0, 0, ect.... 0}, // Key 2 Value 2
{0, 0},
{0, 0},
{0, 0},
{0, 0},
{0, 0}
};

基本上,我会查看 map 并设置这个 256x256 数组中的所有 256 个值,并将正确的值设置为 true,其中键是水平行,值是垂直行。

这是我目前的代码:

int main(){

ifstream myfile("H:\\School\\CSC-718\\paths.txt");
std::map<int, int> mymap;
pair<int,int> me;
char commas;
int a, b;
vector<int> v;

while (myfile >> a >> commas >> b){
mymap[a] = b;
}
mymap;

bool bpGraph[M][N] = {
//...
};

cout << "Maximum number networks "
<< maxBPM(bpGraph);

return 0;
}

问题:

我可以就实现提出一些意见/建议吗?

最佳答案

您可以使用迭代器迭代 map 。从迭代器中,您可以分别使用“第一”和“第二”成员提取键和值。然后您可以将这些值放入数组中。

对于以下代码,迭代映射并打印每个键和关联的值:

void MapExample(void)
{
std::map<int, int> mymap;

mymap[1] = 11;
mymap[2] = 22;
mymap[3] = 33;

for (std::map<int,int>::iterator it=mymap.begin();it!=mymap.end(); ++it)
{
std::cout << it->first << "->" << it->second << "\n";
}
}

上面的打印

1->11

2->22

3->33

编辑:我不确定我是否理解正确,但如果我理解正确,您想要构建数据的等效表示,它使用 256x256 数组而不是 map 。

所以迭代你会做的 map :

    for (std::map<int,int>::iterator it=mymap.begin();it!=mymap.end(); ++it)
{
int key = it->first;
int value = it->second;

bpGraph[key-1][value-1] = 1; //the indexes to the array are zero based, so you need to subtract 1, if your keys and values belong to {1, ... ,256}
}

请注意,您需要将所有数组元素初始化为零。 for循环执行后,仅当键(i+1)与值(j+1)相关联时,V[i][j]=1。

关于c++ - 从 map 中取出 Int 值并将它们迭代到二分图 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32867197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com