fixed the wrong positioner invocation bug in BinaryHeap::remove()
This commit is contained in:
parent
c24d198cbf
commit
c846b8ba4e
@ -547,18 +547,18 @@ public:
|
|||||||
qse_size_t upsert (qse_size_t index, const T& value)
|
qse_size_t upsert (qse_size_t index, const T& value)
|
||||||
{
|
{
|
||||||
if (index < this->count)
|
if (index < this->count)
|
||||||
return this->update (index, value);
|
return this->update(index, value);
|
||||||
else
|
else
|
||||||
return this->insert (index, value);
|
return this->insert(index, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
||||||
qse_size_t upsert (qse_size_t index, T&& value)
|
qse_size_t upsert (qse_size_t index, T&& value)
|
||||||
{
|
{
|
||||||
if (index < this->count)
|
if (index < this->count)
|
||||||
return this->update (index, QSE_CPP_RVREF(value));
|
return this->update(index, QSE_CPP_RVREF(value));
|
||||||
else
|
else
|
||||||
return this->insert (index, QSE_CPP_RVREF(value));
|
return this->insert(index, QSE_CPP_RVREF(value));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -567,7 +567,7 @@ public:
|
|||||||
if (index < this->count)
|
if (index < this->count)
|
||||||
return index; // no update
|
return index; // no update
|
||||||
else
|
else
|
||||||
return this->insert (index, value);
|
return this->insert(index, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
||||||
@ -576,31 +576,31 @@ public:
|
|||||||
if (index < this->count)
|
if (index < this->count)
|
||||||
return index; // no update
|
return index; // no update
|
||||||
else
|
else
|
||||||
return this->insert (index, QSE_CPP_RVREF(value));
|
return this->insert(index, QSE_CPP_RVREF(value));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
qse_size_t insertFirst (const T& value)
|
qse_size_t insertFirst (const T& value)
|
||||||
{
|
{
|
||||||
return this->insert (0, value);
|
return this->insert(0, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
||||||
qse_size_t insertFirst (T&& value)
|
qse_size_t insertFirst (T&& value)
|
||||||
{
|
{
|
||||||
return this->insert (0, QSE_CPP_RVREF(value));
|
return this->insert(0, QSE_CPP_RVREF(value));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
qse_size_t insertLast (const T& value)
|
qse_size_t insertLast (const T& value)
|
||||||
{
|
{
|
||||||
return this->insert (this->getSize(), value);
|
return this->insert(this->getSize(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
||||||
qse_size_t insertLast (T&& value)
|
qse_size_t insertLast (T&& value)
|
||||||
{
|
{
|
||||||
return this->insert (this->getSize(), QSE_CPP_RVREF(value));
|
return this->insert(this->getSize(), QSE_CPP_RVREF(value));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -240,7 +240,6 @@ public:
|
|||||||
|
|
||||||
if (this->count == 1)
|
if (this->count == 1)
|
||||||
{
|
{
|
||||||
QSE_ASSERT (index == 0);
|
|
||||||
ParentType::remove (this->count - 1);
|
ParentType::remove (this->count - 1);
|
||||||
}
|
}
|
||||||
else if (this->count > 1)
|
else if (this->count > 1)
|
||||||
@ -251,11 +250,14 @@ public:
|
|||||||
// copy the last item to the position to remove
|
// copy the last item to the position to remove
|
||||||
ParentType::update (index, QSE_CPP_RVREF(this->buffer[this->count - 1]));
|
ParentType::update (index, QSE_CPP_RVREF(this->buffer[this->count - 1]));
|
||||||
|
|
||||||
// delete the last item
|
// decrement the count as if the last item has been deleted.
|
||||||
ParentType::remove (this->count - 1);
|
this->count = this->count - 1;
|
||||||
|
|
||||||
// relocate the item
|
// relocate the item
|
||||||
(this->greater_than (this->buffer[index], old))? this->sift_up(index): this->sift_down(index);
|
(this->greater_than(this->buffer[index], old))? this->sift_up(index): this->sift_down(index);
|
||||||
|
|
||||||
|
// call the positioner on the actual item removed
|
||||||
|
this->_positioner (old, INVALID_INDEX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +93,11 @@
|
|||||||
#define QSE_SEC_TO_USEC(sec) ((sec) * QSE_USECS_PER_SEC)
|
#define QSE_SEC_TO_USEC(sec) ((sec) * QSE_USECS_PER_SEC)
|
||||||
#define QSE_USEC_TO_SEC(usec) ((usec) / QSE_USECS_PER_SEC)
|
#define QSE_USEC_TO_SEC(usec) ((usec) / QSE_USECS_PER_SEC)
|
||||||
|
|
||||||
|
#if defined(QSE_SIZEOF_INT64_T) && (QSE_SIZEOF_INT64_T > 0)
|
||||||
typedef qse_int64_t qse_ntime_sec_t;
|
typedef qse_int64_t qse_ntime_sec_t;
|
||||||
|
#else
|
||||||
|
typedef qse_int32_t qse_ntime_sec_t;
|
||||||
|
#endif
|
||||||
typedef qse_int32_t qse_ntime_nsec_t;
|
typedef qse_int32_t qse_ntime_nsec_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,7 +74,7 @@ if ENABLE_CXX
|
|||||||
#rex02_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
|
#rex02_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
|
||||||
#rex02_LDFLAGS = -pthread -Wl,-Bsymbolic-functions -lwx_gtk2ud_richtext-2.8 -lwx_gtk2ud_aui-2.8 -lwx_gtk2ud_xrc-2.8 -lwx_gtk2ud_qa-2.8 -lwx_gtk2ud_html-2.8 -lwx_gtk2ud_adv-2.8 -lwx_gtk2ud_core-2.8 -lwx_baseud_xml-2.8 -lwx_baseud_net-2.8 -lwx_baseud-2.8
|
#rex02_LDFLAGS = -pthread -Wl,-Bsymbolic-functions -lwx_gtk2ud_richtext-2.8 -lwx_gtk2ud_aui-2.8 -lwx_gtk2ud_xrc-2.8 -lwx_gtk2ud_qa-2.8 -lwx_gtk2ud_html-2.8 -lwx_gtk2ud_adv-2.8 -lwx_gtk2ud_core-2.8 -lwx_baseud_xml-2.8 -lwx_baseud_net-2.8 -lwx_baseud-2.8
|
||||||
|
|
||||||
bin_PROGRAMS += arr02 arr03 bh01 bh02 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
bin_PROGRAMS += arr02 arr03 bh01 bh02 bh03 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
||||||
|
|
||||||
arr02_SOURCES = arr02.cpp
|
arr02_SOURCES = arr02.cpp
|
||||||
|
|
||||||
@ -84,6 +84,8 @@ bh01_SOURCES = bh01.cpp
|
|||||||
|
|
||||||
bh02_SOURCES = bh02.cpp
|
bh02_SOURCES = bh02.cpp
|
||||||
|
|
||||||
|
bh03_SOURCES = bh03.cpp
|
||||||
|
|
||||||
hl01_SOURCES = hl01.cpp
|
hl01_SOURCES = hl01.cpp
|
||||||
|
|
||||||
htb02_SOURCES = htb02.cpp
|
htb02_SOURCES = htb02.cpp
|
||||||
|
@ -102,7 +102,7 @@ bin_PROGRAMS = arr01$(EXEEXT) chr01$(EXEEXT) dll$(EXEEXT) \
|
|||||||
#rex02_SOURCES = rex02.cpp
|
#rex02_SOURCES = rex02.cpp
|
||||||
#rex02_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
|
#rex02_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
|
||||||
#rex02_LDFLAGS = -pthread -Wl,-Bsymbolic-functions -lwx_gtk2ud_richtext-2.8 -lwx_gtk2ud_aui-2.8 -lwx_gtk2ud_xrc-2.8 -lwx_gtk2ud_qa-2.8 -lwx_gtk2ud_html-2.8 -lwx_gtk2ud_adv-2.8 -lwx_gtk2ud_core-2.8 -lwx_baseud_xml-2.8 -lwx_baseud_net-2.8 -lwx_baseud-2.8
|
#rex02_LDFLAGS = -pthread -Wl,-Bsymbolic-functions -lwx_gtk2ud_richtext-2.8 -lwx_gtk2ud_aui-2.8 -lwx_gtk2ud_xrc-2.8 -lwx_gtk2ud_qa-2.8 -lwx_gtk2ud_html-2.8 -lwx_gtk2ud_adv-2.8 -lwx_gtk2ud_core-2.8 -lwx_baseud_xml-2.8 -lwx_baseud_net-2.8 -lwx_baseud-2.8
|
||||||
@ENABLE_CXX_TRUE@am__append_2 = arr02 arr03 bh01 bh02 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
@ENABLE_CXX_TRUE@am__append_2 = arr02 arr03 bh01 bh02 bh03 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
||||||
subdir = samples/cmn
|
subdir = samples/cmn
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
||||||
@ -122,9 +122,10 @@ CONFIG_HEADER = $(top_builddir)/include/qse/config.h
|
|||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
@ENABLE_CXX_TRUE@am__EXEEXT_1 = arr02$(EXEEXT) arr03$(EXEEXT) \
|
@ENABLE_CXX_TRUE@am__EXEEXT_1 = arr02$(EXEEXT) arr03$(EXEEXT) \
|
||||||
@ENABLE_CXX_TRUE@ bh01$(EXEEXT) bh02$(EXEEXT) hl01$(EXEEXT) \
|
@ENABLE_CXX_TRUE@ bh01$(EXEEXT) bh02$(EXEEXT) bh03$(EXEEXT) \
|
||||||
@ENABLE_CXX_TRUE@ htb02$(EXEEXT) rbt02$(EXEEXT) rbt03$(EXEEXT) \
|
@ENABLE_CXX_TRUE@ hl01$(EXEEXT) htb02$(EXEEXT) rbt02$(EXEEXT) \
|
||||||
@ENABLE_CXX_TRUE@ sp01$(EXEEXT) sp02$(EXEEXT) str02$(EXEEXT)
|
@ENABLE_CXX_TRUE@ rbt03$(EXEEXT) sp01$(EXEEXT) sp02$(EXEEXT) \
|
||||||
|
@ENABLE_CXX_TRUE@ str02$(EXEEXT)
|
||||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
am_arr01_OBJECTS = arr01.$(OBJEXT)
|
am_arr01_OBJECTS = arr01.$(OBJEXT)
|
||||||
@ -157,6 +158,11 @@ am__bh02_SOURCES_DIST = bh02.cpp
|
|||||||
bh02_OBJECTS = $(am_bh02_OBJECTS)
|
bh02_OBJECTS = $(am_bh02_OBJECTS)
|
||||||
bh02_LDADD = $(LDADD)
|
bh02_LDADD = $(LDADD)
|
||||||
bh02_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
bh02_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||||
|
am__bh03_SOURCES_DIST = bh03.cpp
|
||||||
|
@ENABLE_CXX_TRUE@am_bh03_OBJECTS = bh03.$(OBJEXT)
|
||||||
|
bh03_OBJECTS = $(am_bh03_OBJECTS)
|
||||||
|
bh03_LDADD = $(LDADD)
|
||||||
|
bh03_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||||
am_chr01_OBJECTS = chr01.$(OBJEXT)
|
am_chr01_OBJECTS = chr01.$(OBJEXT)
|
||||||
chr01_OBJECTS = $(am_chr01_OBJECTS)
|
chr01_OBJECTS = $(am_chr01_OBJECTS)
|
||||||
chr01_LDADD = $(LDADD)
|
chr01_LDADD = $(LDADD)
|
||||||
@ -309,18 +315,18 @@ depcomp = $(SHELL) $(top_srcdir)/ac/depcomp
|
|||||||
am__maybe_remake_depfiles = depfiles
|
am__maybe_remake_depfiles = depfiles
|
||||||
am__depfiles_remade = ./$(DEPDIR)/arr01.Po ./$(DEPDIR)/arr02.Po \
|
am__depfiles_remade = ./$(DEPDIR)/arr01.Po ./$(DEPDIR)/arr02.Po \
|
||||||
./$(DEPDIR)/arr03.Po ./$(DEPDIR)/bh01.Po ./$(DEPDIR)/bh02.Po \
|
./$(DEPDIR)/arr03.Po ./$(DEPDIR)/bh01.Po ./$(DEPDIR)/bh02.Po \
|
||||||
./$(DEPDIR)/chr01.Po ./$(DEPDIR)/dll.Po ./$(DEPDIR)/env01.Po \
|
./$(DEPDIR)/bh03.Po ./$(DEPDIR)/chr01.Po ./$(DEPDIR)/dll.Po \
|
||||||
./$(DEPDIR)/fma.Po ./$(DEPDIR)/fmt01.Po ./$(DEPDIR)/fmt02.Po \
|
./$(DEPDIR)/env01.Po ./$(DEPDIR)/fma.Po ./$(DEPDIR)/fmt01.Po \
|
||||||
./$(DEPDIR)/hl01.Po ./$(DEPDIR)/htb01.Po ./$(DEPDIR)/htb02.Po \
|
./$(DEPDIR)/fmt02.Po ./$(DEPDIR)/hl01.Po ./$(DEPDIR)/htb01.Po \
|
||||||
./$(DEPDIR)/htl01.Po ./$(DEPDIR)/ipad01.Po \
|
./$(DEPDIR)/htb02.Po ./$(DEPDIR)/htl01.Po \
|
||||||
./$(DEPDIR)/main01.Po ./$(DEPDIR)/main02.Po \
|
./$(DEPDIR)/ipad01.Po ./$(DEPDIR)/main01.Po \
|
||||||
./$(DEPDIR)/mbwc01.Po ./$(DEPDIR)/mbwc02.Po ./$(DEPDIR)/oht.Po \
|
./$(DEPDIR)/main02.Po ./$(DEPDIR)/mbwc01.Po \
|
||||||
./$(DEPDIR)/path01.Po ./$(DEPDIR)/pma.Po ./$(DEPDIR)/rbt01.Po \
|
./$(DEPDIR)/mbwc02.Po ./$(DEPDIR)/oht.Po ./$(DEPDIR)/path01.Po \
|
||||||
./$(DEPDIR)/rbt02.Po ./$(DEPDIR)/rbt03.Po ./$(DEPDIR)/rex01.Po \
|
./$(DEPDIR)/pma.Po ./$(DEPDIR)/rbt01.Po ./$(DEPDIR)/rbt02.Po \
|
||||||
./$(DEPDIR)/sll.Po ./$(DEPDIR)/slmb01.Po ./$(DEPDIR)/sp01.Po \
|
./$(DEPDIR)/rbt03.Po ./$(DEPDIR)/rex01.Po ./$(DEPDIR)/sll.Po \
|
||||||
./$(DEPDIR)/sp02.Po ./$(DEPDIR)/str01.Po ./$(DEPDIR)/str02.Po \
|
./$(DEPDIR)/slmb01.Po ./$(DEPDIR)/sp01.Po ./$(DEPDIR)/sp02.Po \
|
||||||
./$(DEPDIR)/time.Po ./$(DEPDIR)/tre01.Po ./$(DEPDIR)/uri01.Po \
|
./$(DEPDIR)/str01.Po ./$(DEPDIR)/str02.Po ./$(DEPDIR)/time.Po \
|
||||||
./$(DEPDIR)/xma.Po
|
./$(DEPDIR)/tre01.Po ./$(DEPDIR)/uri01.Po ./$(DEPDIR)/xma.Po
|
||||||
am__mv = mv -f
|
am__mv = mv -f
|
||||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
@ -359,22 +365,23 @@ am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
|
|||||||
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
||||||
am__v_CXXLD_1 =
|
am__v_CXXLD_1 =
|
||||||
SOURCES = $(arr01_SOURCES) $(arr02_SOURCES) $(arr03_SOURCES) \
|
SOURCES = $(arr01_SOURCES) $(arr02_SOURCES) $(arr03_SOURCES) \
|
||||||
$(bh01_SOURCES) $(bh02_SOURCES) $(chr01_SOURCES) \
|
$(bh01_SOURCES) $(bh02_SOURCES) $(bh03_SOURCES) \
|
||||||
$(dll_SOURCES) $(env01_SOURCES) $(fma_SOURCES) \
|
$(chr01_SOURCES) $(dll_SOURCES) $(env01_SOURCES) \
|
||||||
$(fmt01_SOURCES) $(fmt02_SOURCES) $(hl01_SOURCES) \
|
$(fma_SOURCES) $(fmt01_SOURCES) $(fmt02_SOURCES) \
|
||||||
$(htb01_SOURCES) $(htb02_SOURCES) htl01.c $(ipad01_SOURCES) \
|
$(hl01_SOURCES) $(htb01_SOURCES) $(htb02_SOURCES) htl01.c \
|
||||||
$(main01_SOURCES) $(main02_SOURCES) $(mbwc01_SOURCES) \
|
$(ipad01_SOURCES) $(main01_SOURCES) $(main02_SOURCES) \
|
||||||
$(mbwc02_SOURCES) $(oht_SOURCES) $(path01_SOURCES) \
|
$(mbwc01_SOURCES) $(mbwc02_SOURCES) $(oht_SOURCES) \
|
||||||
$(pma_SOURCES) $(rbt01_SOURCES) $(rbt02_SOURCES) \
|
$(path01_SOURCES) $(pma_SOURCES) $(rbt01_SOURCES) \
|
||||||
$(rbt03_SOURCES) $(rex01_SOURCES) $(sll_SOURCES) \
|
$(rbt02_SOURCES) $(rbt03_SOURCES) $(rex01_SOURCES) \
|
||||||
$(slmb01_SOURCES) $(sp01_SOURCES) $(sp02_SOURCES) \
|
$(sll_SOURCES) $(slmb01_SOURCES) $(sp01_SOURCES) \
|
||||||
$(str01_SOURCES) $(str02_SOURCES) $(time_SOURCES) \
|
$(sp02_SOURCES) $(str01_SOURCES) $(str02_SOURCES) \
|
||||||
$(tre01_SOURCES) uri01.c $(xma_SOURCES)
|
$(time_SOURCES) $(tre01_SOURCES) uri01.c $(xma_SOURCES)
|
||||||
DIST_SOURCES = $(arr01_SOURCES) $(am__arr02_SOURCES_DIST) \
|
DIST_SOURCES = $(arr01_SOURCES) $(am__arr02_SOURCES_DIST) \
|
||||||
$(am__arr03_SOURCES_DIST) $(am__bh01_SOURCES_DIST) \
|
$(am__arr03_SOURCES_DIST) $(am__bh01_SOURCES_DIST) \
|
||||||
$(am__bh02_SOURCES_DIST) $(chr01_SOURCES) $(dll_SOURCES) \
|
$(am__bh02_SOURCES_DIST) $(am__bh03_SOURCES_DIST) \
|
||||||
$(env01_SOURCES) $(fma_SOURCES) $(fmt01_SOURCES) \
|
$(chr01_SOURCES) $(dll_SOURCES) $(env01_SOURCES) \
|
||||||
$(fmt02_SOURCES) $(am__hl01_SOURCES_DIST) $(htb01_SOURCES) \
|
$(fma_SOURCES) $(fmt01_SOURCES) $(fmt02_SOURCES) \
|
||||||
|
$(am__hl01_SOURCES_DIST) $(htb01_SOURCES) \
|
||||||
$(am__htb02_SOURCES_DIST) htl01.c $(ipad01_SOURCES) \
|
$(am__htb02_SOURCES_DIST) htl01.c $(ipad01_SOURCES) \
|
||||||
$(main01_SOURCES) $(main02_SOURCES) $(mbwc01_SOURCES) \
|
$(main01_SOURCES) $(main02_SOURCES) $(mbwc01_SOURCES) \
|
||||||
$(mbwc02_SOURCES) $(oht_SOURCES) $(path01_SOURCES) \
|
$(mbwc02_SOURCES) $(oht_SOURCES) $(path01_SOURCES) \
|
||||||
@ -600,6 +607,7 @@ xma_SOURCES = xma.c
|
|||||||
@ENABLE_CXX_TRUE@arr03_SOURCES = arr03.cpp
|
@ENABLE_CXX_TRUE@arr03_SOURCES = arr03.cpp
|
||||||
@ENABLE_CXX_TRUE@bh01_SOURCES = bh01.cpp
|
@ENABLE_CXX_TRUE@bh01_SOURCES = bh01.cpp
|
||||||
@ENABLE_CXX_TRUE@bh02_SOURCES = bh02.cpp
|
@ENABLE_CXX_TRUE@bh02_SOURCES = bh02.cpp
|
||||||
|
@ENABLE_CXX_TRUE@bh03_SOURCES = bh03.cpp
|
||||||
@ENABLE_CXX_TRUE@hl01_SOURCES = hl01.cpp
|
@ENABLE_CXX_TRUE@hl01_SOURCES = hl01.cpp
|
||||||
@ENABLE_CXX_TRUE@htb02_SOURCES = htb02.cpp
|
@ENABLE_CXX_TRUE@htb02_SOURCES = htb02.cpp
|
||||||
@ENABLE_CXX_TRUE@rbt02_SOURCES = rbt02.cpp #RedBlackTree
|
@ENABLE_CXX_TRUE@rbt02_SOURCES = rbt02.cpp #RedBlackTree
|
||||||
@ -710,6 +718,10 @@ bh02$(EXEEXT): $(bh02_OBJECTS) $(bh02_DEPENDENCIES) $(EXTRA_bh02_DEPENDENCIES)
|
|||||||
@rm -f bh02$(EXEEXT)
|
@rm -f bh02$(EXEEXT)
|
||||||
$(AM_V_CXXLD)$(CXXLINK) $(bh02_OBJECTS) $(bh02_LDADD) $(LIBS)
|
$(AM_V_CXXLD)$(CXXLINK) $(bh02_OBJECTS) $(bh02_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
bh03$(EXEEXT): $(bh03_OBJECTS) $(bh03_DEPENDENCIES) $(EXTRA_bh03_DEPENDENCIES)
|
||||||
|
@rm -f bh03$(EXEEXT)
|
||||||
|
$(AM_V_CXXLD)$(CXXLINK) $(bh03_OBJECTS) $(bh03_LDADD) $(LIBS)
|
||||||
|
|
||||||
chr01$(EXEEXT): $(chr01_OBJECTS) $(chr01_DEPENDENCIES) $(EXTRA_chr01_DEPENDENCIES)
|
chr01$(EXEEXT): $(chr01_OBJECTS) $(chr01_DEPENDENCIES) $(EXTRA_chr01_DEPENDENCIES)
|
||||||
@rm -f chr01$(EXEEXT)
|
@rm -f chr01$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(chr01_OBJECTS) $(chr01_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(chr01_OBJECTS) $(chr01_LDADD) $(LIBS)
|
||||||
@ -849,6 +861,7 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arr03.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arr03.Po@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bh01.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bh01.Po@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bh02.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bh02.Po@am__quote@ # am--include-marker
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bh03.Po@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chr01.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chr01.Po@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dll.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dll.Po@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env01.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env01.Po@am__quote@ # am--include-marker
|
||||||
@ -1068,6 +1081,7 @@ distclean: distclean-am
|
|||||||
-rm -f ./$(DEPDIR)/arr03.Po
|
-rm -f ./$(DEPDIR)/arr03.Po
|
||||||
-rm -f ./$(DEPDIR)/bh01.Po
|
-rm -f ./$(DEPDIR)/bh01.Po
|
||||||
-rm -f ./$(DEPDIR)/bh02.Po
|
-rm -f ./$(DEPDIR)/bh02.Po
|
||||||
|
-rm -f ./$(DEPDIR)/bh03.Po
|
||||||
-rm -f ./$(DEPDIR)/chr01.Po
|
-rm -f ./$(DEPDIR)/chr01.Po
|
||||||
-rm -f ./$(DEPDIR)/dll.Po
|
-rm -f ./$(DEPDIR)/dll.Po
|
||||||
-rm -f ./$(DEPDIR)/env01.Po
|
-rm -f ./$(DEPDIR)/env01.Po
|
||||||
@ -1150,6 +1164,7 @@ maintainer-clean: maintainer-clean-am
|
|||||||
-rm -f ./$(DEPDIR)/arr03.Po
|
-rm -f ./$(DEPDIR)/arr03.Po
|
||||||
-rm -f ./$(DEPDIR)/bh01.Po
|
-rm -f ./$(DEPDIR)/bh01.Po
|
||||||
-rm -f ./$(DEPDIR)/bh02.Po
|
-rm -f ./$(DEPDIR)/bh02.Po
|
||||||
|
-rm -f ./$(DEPDIR)/bh03.Po
|
||||||
-rm -f ./$(DEPDIR)/chr01.Po
|
-rm -f ./$(DEPDIR)/chr01.Po
|
||||||
-rm -f ./$(DEPDIR)/dll.Po
|
-rm -f ./$(DEPDIR)/dll.Po
|
||||||
-rm -f ./$(DEPDIR)/env01.Po
|
-rm -f ./$(DEPDIR)/env01.Po
|
||||||
|
122
qse/samples/cmn/bh03.cpp
Normal file
122
qse/samples/cmn/bh03.cpp
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <qse/cmn/BinaryHeap.hpp>
|
||||||
|
#include <qse/cmn/String.hpp>
|
||||||
|
#include <qse/cmn/alg.h>
|
||||||
|
#include <qse/cmn/time.h>
|
||||||
|
|
||||||
|
|
||||||
|
//#define MAX_HEAP
|
||||||
|
|
||||||
|
class Julia
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
struct julia_t
|
||||||
|
{
|
||||||
|
julia_t(int v): v(v), heap_pos(~(qse_size_t)0) {}
|
||||||
|
|
||||||
|
int v;
|
||||||
|
qse_size_t heap_pos;
|
||||||
|
};
|
||||||
|
|
||||||
|
Julia (int q = 0): x(QSE_NULL)
|
||||||
|
{
|
||||||
|
this->x = new julia_t (q);
|
||||||
|
}
|
||||||
|
|
||||||
|
Julia (const Julia& q): x(QSE_NULL)
|
||||||
|
{
|
||||||
|
this->x = new julia_t (*q.x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
||||||
|
Julia (Julia&& q)
|
||||||
|
{
|
||||||
|
this->x = q.x;
|
||||||
|
q.x = QSE_NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
~Julia()
|
||||||
|
{
|
||||||
|
if (this->x) delete this->x;
|
||||||
|
}
|
||||||
|
|
||||||
|
Julia& operator= (const Julia& q)
|
||||||
|
{
|
||||||
|
if (this != &q)
|
||||||
|
{
|
||||||
|
if (this->x) { delete this->x; this->x = QSE_NULL; }
|
||||||
|
this->x = new julia_t (*q.x);
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(QSE_CPP_ENABLE_CPP11_MOVE)
|
||||||
|
Julia& operator= (Julia&& q)
|
||||||
|
{
|
||||||
|
if (this != &q)
|
||||||
|
{
|
||||||
|
if (this->x) { delete this->x; this->x = QSE_NULL; }
|
||||||
|
this->x = q.x;
|
||||||
|
q.x = QSE_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(MAX_HEAP)
|
||||||
|
bool operator> (const Julia& q) const { return this->x->v > q.x->v; }
|
||||||
|
#else
|
||||||
|
bool operator> (const Julia& q) const { return this->x->v < q.x->v; }
|
||||||
|
#endif
|
||||||
|
julia_t* x;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct JuliaGreaterThan
|
||||||
|
{
|
||||||
|
bool operator() (const Julia& b1, const Julia& b2) const
|
||||||
|
{
|
||||||
|
return b1 > b2;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct JuliaOnAssign
|
||||||
|
{
|
||||||
|
void operator() (Julia& b, qse_size_t index) const
|
||||||
|
{
|
||||||
|
b.x->heap_pos = index;
|
||||||
|
//printf ("%p[%d] to position %zd\n", &b, b.x->v, index);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef QSE::BinaryHeap<Julia,JuliaGreaterThan,JuliaOnAssign> JuliaHeap;
|
||||||
|
|
||||||
|
int main ()
|
||||||
|
{
|
||||||
|
{
|
||||||
|
JuliaHeap jh;
|
||||||
|
jh.insert (Julia(10));
|
||||||
|
jh.insert (Julia(20));
|
||||||
|
jh.insert (Julia(30));
|
||||||
|
jh.insert (Julia(40));
|
||||||
|
jh.insert (Julia(50));
|
||||||
|
jh.remove (1);
|
||||||
|
|
||||||
|
// test if the positioner(JuliaOnAssign) is called properly.
|
||||||
|
QSE_ASSERT (jh.getValueAt(0).x->heap_pos == 0);
|
||||||
|
QSE_ASSERT (jh.getValueAt(1).x->heap_pos == 1);
|
||||||
|
QSE_ASSERT (jh.getValueAt(2).x->heap_pos == 2);
|
||||||
|
QSE_ASSERT (jh.getValueAt(3).x->heap_pos == 3);
|
||||||
|
|
||||||
|
printf ("%zd\n", jh.getValueAt(0).x->heap_pos);
|
||||||
|
printf ("%zd\n", jh.getValueAt(1).x->heap_pos);
|
||||||
|
printf ("%zd\n", jh.getValueAt(2).x->heap_pos);
|
||||||
|
printf ("%zd\n", jh.getValueAt(3).x->heap_pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user