>

벡터 쌍의 벡터를 사용하여 인접 목록을 만들려고하는데 코드를 실행할 때마다 작동이 중지됩니다. 현재는 인접 목록 "AdjList"에 첫 번째 쌍만 추가하려고합니다. 더 좋은 방법이나 수정이 있습니까?

#include <iostream>
#include <vector>
using namespace std;
typedef pair<int, int> ii;
typedef vector<ii> vii;
vector <vii> AdjList;
int main()
{
    ii v= make_pair(5,4);
    AdjList[0][0]=v;
    cout << v.first<< endl;
}


  • 답변 # 1

    빈 벡터에 값을 할당하고 있습니다 :

    AdjList[0][0] = v; // Problematic
    
    

    std::vector::push_back 를 사용해보십시오  또는 중첩 된 두 벡터의 크기를 조정하십시오.

    다른 방법은 std::array 를 사용하는 것입니다  그래프의 크기를 알고있는 경우 :

    const int N = 10;
    std::array<std::array<int, N>, N>  AdjList;
    ...
    AdjList[0][0] = 1;
    
    

  • 답변 # 2

    std::set 를 사용하는 것이 좋습니다  또는 std::unordered_set :

    std::set<std::pair<int,int>> adj_list;
    adj_list.emplace(0,0);
    adj_list.emplace(0,1);
    for(auto& p:adj_list)
        std::cout<<p.first<<"-"<<p.second<<std::endl;
    
    

  • 이전 python - 황혼 - apply를 사용하여 series를 dataframe에 연결하는 방법은 무엇입니까?
  • 다음 xml - 파이썬 3의 경우 lxml을 사용하여 속성 앞에 'xsi - '를 쓰십시오