Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从映射中提取Int值并将其迭代到二部图C++;_C++_Loops_Bipartite - Fatal编程技术网

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的两个整数,如第一个代码示例所示。我进一步解释了上面的问题。请让我知道我正在尝试做的事情是否更有意义。