Skip to content

Commit fd7bc21

Browse files
authored
Merge pull request #36 from vtraag/fix/35
Correct resetting the cached weights to/from communities.
2 parents f24f0be + f05139a commit fd7bc21

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/MutableVertexPartition.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -746,25 +746,28 @@ void MutableVertexPartition::cache_neigh_communities(size_t v, igraph_neimode_t
746746
cerr << "double MutableVertexPartition::cache_neigh_communities(" << v << ", " << mode << ")." << endl;
747747
#endif
748748
vector<double>* _cached_weight_tofrom_community = NULL;
749-
vector<size_t>* _cached_neighs = NULL;
749+
vector<size_t>* _cached_neighs_comms = NULL;
750750
switch (mode)
751751
{
752752
case IGRAPH_IN:
753753
_cached_weight_tofrom_community = &(this->_cached_weight_from_community);
754-
_cached_neighs = &(this->_cached_neigh_comms_from);
754+
_cached_neighs_comms = &(this->_cached_neigh_comms_from);
755755
break;
756756
case IGRAPH_OUT:
757757
_cached_weight_tofrom_community = &(this->_cached_weight_to_community);
758-
_cached_neighs = &(this->_cached_neigh_comms_to);
758+
_cached_neighs_comms = &(this->_cached_neigh_comms_to);
759759
break;
760760
case IGRAPH_ALL:
761761
_cached_weight_tofrom_community = &(this->_cached_weight_all_community);
762-
_cached_neighs = &(this->_cached_neigh_comms_all);
762+
_cached_neighs_comms = &(this->_cached_neigh_comms_all);
763763
break;
764764
}
765765

766766
// Reset cached communities
767-
std::fill(_cached_weight_tofrom_community->begin(), _cached_weight_tofrom_community->end(), 0);
767+
for (vector<size_t>::iterator it = _cached_neighs_comms->begin();
768+
it != _cached_neighs_comms->end();
769+
it++)
770+
(*_cached_weight_tofrom_community)[*it] = 0;
768771

769772
// Loop over all incident edges
770773
vector<size_t> const& neighbours = this->graph->get_neighbours(v, mode);
@@ -773,8 +776,8 @@ void MutableVertexPartition::cache_neigh_communities(size_t v, igraph_neimode_t
773776
size_t degree = neighbours.size();
774777

775778
// Reset cached neighbours
776-
_cached_neighs->clear();
777-
_cached_neighs->reserve(degree);
779+
_cached_neighs_comms->clear();
780+
_cached_neighs_comms->reserve(degree);
778781
for (size_t idx = 0; idx < degree; idx++)
779782
{
780783
size_t u = neighbours[idx];
@@ -799,7 +802,7 @@ void MutableVertexPartition::cache_neigh_communities(size_t v, igraph_neimode_t
799802
// times to the _cached_neighs. However, I don' believe this causes any further issue,
800803
// so that's why I leave this here as is.
801804
if ((*_cached_weight_tofrom_community)[comm] != 0)
802-
_cached_neighs->push_back(comm);
805+
_cached_neighs_comms->push_back(comm);
803806
}
804807
#ifdef DEBUG
805808
cerr << "exit Graph::cache_neigh_communities(" << v << ", " << mode << ")." << endl;

0 commit comments

Comments
 (0)