Changeset 2732


Ignore:
Timestamp:
Nov 19, 2009, 1:30:01 PM (15 years ago)
Author:
strk
Message:

Don't heap-allocate std::vector in MCIndexSegmentSetMutualIntersector

Location:
trunk/source
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h

    r2479 r2732  
    5757        ~MCIndexSegmentSetMutualIntersector();
    5858
    59         std::vector<index::chain::MonotoneChain *>* getMonotoneChains()
     59        std::vector<index::chain::MonotoneChain *>& getMonotoneChains()
    6060        {
    6161                return monoChains;
     
    9090private:
    9191
    92         std::vector<index::chain::MonotoneChain *> * monoChains;
     92        typedef std::vector<index::chain::MonotoneChain *> MonoChains;
     93        MonoChains monoChains;
    9394
    9495        /*
  • trunk/source/noding/MCIndexSegmentSetMutualIntersector.cpp

    r2479 r2732  
    5555    MCIndexSegmentSetMutualIntersector::SegmentOverlapAction overlapAction( *segInt);
    5656
    57     for (std::size_t i = 0, ni = monoChains->size(); i < ni; i++)
     57    for (MonoChains::size_type i = 0, ni = monoChains.size(); i < ni; ++i)
    5858    {
    59         MonotoneChain * queryChain = (MonotoneChain *)((*monoChains)[i]);
     59        MonotoneChain * queryChain = (MonotoneChain *)monoChains[i];
    6060
    6161        std::vector<void*> overlapChains;
     
    7777MCIndexSegmentSetMutualIntersector::addToMonoChains(SegmentString* segStr)
    7878{
    79     std::vector<MonotoneChain*>* segChains = 0;
    80     segChains = MonotoneChainBuilder::getChains(segStr->getCoordinates(), segStr);
     79    MonoChains* segChains =
     80        MonotoneChainBuilder::getChains(segStr->getCoordinates(), segStr);
    8181
    8282    chainStore.push_back(segChains);
    8383
    84     for (std::size_t i = 0, ni = segChains->size(); i < ni; i++)
     84    for (MonoChains::size_type i = 0, ni = segChains->size(); i < ni; i++)
    8585    {
    8686        MonotoneChain* mc = (*segChains)[i];
    8787        mc->setId( processCounter++ );
    88         monoChains->push_back(mc);
     88        monoChains.push_back(mc);
    8989    }
    9090}
     
    9595
    9696MCIndexSegmentSetMutualIntersector::MCIndexSegmentSetMutualIntersector()
    97 :       monoChains( new std::vector<index::chain::MonotoneChain *>()),
     97:       monoChains(),
    9898index(new geos::index::strtree::STRtree()),
    9999indexCounter(0),
     
    106106{
    107107    delete index;
    108     delete monoChains;
    109108
    110109    chainstore_mm_type::iterator end = chainStore.end();
     
    139138    processCounter = indexCounter + 1;
    140139    nOverlaps = 0;
    141     monoChains->clear();
     140    monoChains.clear();
    142141
    143142    for (std::size_t i = 0, n = segStrings->size(); i < n; i++)
Note: See TracChangeset for help on using the changeset viewer.