C++ 从映射中提取Int值并将其迭代到二部图C++;
这对我来说相当复杂,希望不是对其他人 我在地图中有一组C++ 从映射中提取Int值并将其迭代到二部图C++;,c++,loops,bipartite,C++,Loops,Bipartite,这对我来说相当复杂,希望不是对其他人 我在地图中有一组256key/value项。我通过ifstream从一个文本文件将数据输入地图。现在,我需要从映射中获取键/值对,我需要使用这些数据点来创建一个二分映射图 我需要做的是迭代每个键和值,并将它们放入bpGraph中,格式如下: bool bpGraph[V][V] = { {0, 0, 0, 1, 0, ect.... 0}, //Key 1 Value 4 {0, 2, 0, 0, 0, ect
256
key/value项。我通过ifstream
从一个文本文件将数据输入地图。现在,我需要从映射中获取键/值对,我需要使用这些数据点来创建一个二分映射图
我需要做的是迭代每个键和值,并将它们放入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}
};
基本上,我将浏览地图并设置这个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;
}
intmain(){
ifstream myfile(“H:\\School\\CSC-718\\path.txt”);
std::map mymap;
配对我;
字符逗号;
INTA,b;
向量v;
while(myfile>>a>>逗号>>b){
mymap[a]=b;
}
mymap;
布尔图[M][N]={
//...
};
cout您可以使用迭代器迭代映射。从迭代器中,您可以分别使用'first'和'second'成员提取键和值。然后您可以将这些值放入数组中
对于以下代码,迭代映射并打印每个键和关联值:
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";
}
}
void映射示例(void)
{
std::map mymap;
mymap[1]=11;
mymap[2]=22;
mymap[3]=33;
对于(std::map::iterator it=mymap.begin();it!=mymap.end();++it)
{
std::cout first 22
3->33
编辑:
我不确定我是否理解正确,但如果我理解正确,您希望构建数据的等效表示,它使用256x256数组而不是映射
因此,迭代地图时,您将执行以下操作:
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(std::map::iterator it=mymap.begin();it!=mymap.end();+it)
{
int key=it->first;
int value=it->second;
bpGraph[key-1][value-1]=1;//数组的索引是从零开始的,因此如果键和值属于{1,…,256},则需要减去1
}
请注意,您需要将所有数组元素初始化为零。执行for循环后,仅当键(i+1)与值(j+1)关联时,V[i][j]=1。我不理解您的问题。为什么需要std::ifstream
以及为什么std::map
?请解释输入内容(ifsream
或map
)@LukášBednařík请告诉我我上面的解释是否更有意义现在你想知道如何迭代std::map并获取所有键和值吗?你能解释一下bpGraph中的值应该是什么吗?@user779446是的,我想迭代映射并获取每个键和值,然后将其放入bpGraph中。值将以逗号分隔irs的两个整数,如第一个代码示例所示。我进一步解释了上面的问题。请让我知道我正在尝试做的事情是否更有意义。