added QSE_CPP_RVREF.
enhanced Array and BinaryHeap for C++11
This commit is contained in:
@ -98,7 +98,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_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 += arr01 arr02 bh01 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
||||
bin_PROGRAMS += arr01 arr02 bh01 bh02 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
||||
|
||||
arr01_SOURCES = arr01.cpp
|
||||
arr01_LDADD = $(LDADD) -lqsecmnxx
|
||||
@ -109,6 +109,9 @@ arr02_LDADD = $(LDADD) -lqsecmnxx
|
||||
bh01_SOURCES = bh01.cpp
|
||||
bh01_LDADD = $(LDADD) -lqsecmnxx
|
||||
|
||||
bh02_SOURCES = bh02.cpp
|
||||
bh02_LDADD = $(LDADD) -lqsecmnxx
|
||||
|
||||
hl01_SOURCES = hl01.cpp
|
||||
hl01_LDADD = $(LDADD) -lqsecmnxx
|
||||
|
||||
|
@ -68,7 +68,7 @@ bin_PROGRAMS = chr01$(EXEEXT) dir01$(EXEEXT) dll$(EXEEXT) \
|
||||
#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_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 = arr01 arr02 bh01 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
||||
@ENABLE_CXX_TRUE@am__append_2 = arr01 arr02 bh01 bh02 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
||||
subdir = samples/cmn
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
@ -87,9 +87,9 @@ CONFIG_HEADER = $(top_builddir)/include/qse/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
@ENABLE_CXX_TRUE@am__EXEEXT_1 = arr01$(EXEEXT) arr02$(EXEEXT) \
|
||||
@ENABLE_CXX_TRUE@ bh01$(EXEEXT) hl01$(EXEEXT) htb02$(EXEEXT) \
|
||||
@ENABLE_CXX_TRUE@ rbt02$(EXEEXT) rbt03$(EXEEXT) sp01$(EXEEXT) \
|
||||
@ENABLE_CXX_TRUE@ sp02$(EXEEXT) str02$(EXEEXT)
|
||||
@ENABLE_CXX_TRUE@ bh01$(EXEEXT) bh02$(EXEEXT) hl01$(EXEEXT) \
|
||||
@ENABLE_CXX_TRUE@ htb02$(EXEEXT) rbt02$(EXEEXT) rbt03$(EXEEXT) \
|
||||
@ENABLE_CXX_TRUE@ sp01$(EXEEXT) sp02$(EXEEXT) str02$(EXEEXT)
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am__arr01_SOURCES_DIST = arr01.cpp
|
||||
@ -110,6 +110,10 @@ am__bh01_SOURCES_DIST = bh01.cpp
|
||||
@ENABLE_CXX_TRUE@am_bh01_OBJECTS = bh01.$(OBJEXT)
|
||||
bh01_OBJECTS = $(am_bh01_OBJECTS)
|
||||
@ENABLE_CXX_TRUE@bh01_DEPENDENCIES = $(am__DEPENDENCIES_3)
|
||||
am__bh02_SOURCES_DIST = bh02.cpp
|
||||
@ENABLE_CXX_TRUE@am_bh02_OBJECTS = bh02.$(OBJEXT)
|
||||
bh02_OBJECTS = $(am_bh02_OBJECTS)
|
||||
@ENABLE_CXX_TRUE@bh02_DEPENDENCIES = $(am__DEPENDENCIES_3)
|
||||
am_chr01_OBJECTS = chr01.$(OBJEXT)
|
||||
chr01_OBJECTS = $(am_chr01_OBJECTS)
|
||||
chr01_LDADD = $(LDADD)
|
||||
@ -341,14 +345,15 @@ AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
SOURCES = $(arr01_SOURCES) $(arr02_SOURCES) $(bh01_SOURCES) \
|
||||
$(chr01_SOURCES) dir01.c $(dll_SOURCES) $(env01_SOURCES) \
|
||||
$(fio01_SOURCES) $(fio02_SOURCES) $(fma_SOURCES) \
|
||||
$(fmt01_SOURCES) $(fmt02_SOURCES) $(fs01_SOURCES) fs02.c \
|
||||
fs03.c $(glob01_SOURCES) $(hl01_SOURCES) $(htb01_SOURCES) \
|
||||
$(htb02_SOURCES) $(ipad01_SOURCES) $(lda_SOURCES) \
|
||||
$(main01_SOURCES) $(main02_SOURCES) $(mbwc01_SOURCES) \
|
||||
$(mbwc02_SOURCES) $(nwad01_SOURCES) nwif01.c nwif02.c \
|
||||
$(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \
|
||||
$(bh02_SOURCES) $(chr01_SOURCES) dir01.c $(dll_SOURCES) \
|
||||
$(env01_SOURCES) $(fio01_SOURCES) $(fio02_SOURCES) \
|
||||
$(fma_SOURCES) $(fmt01_SOURCES) $(fmt02_SOURCES) \
|
||||
$(fs01_SOURCES) fs02.c fs03.c $(glob01_SOURCES) \
|
||||
$(hl01_SOURCES) $(htb01_SOURCES) $(htb02_SOURCES) \
|
||||
$(ipad01_SOURCES) $(lda_SOURCES) $(main01_SOURCES) \
|
||||
$(main02_SOURCES) $(mbwc01_SOURCES) $(mbwc02_SOURCES) \
|
||||
$(nwad01_SOURCES) nwif01.c nwif02.c $(oht_SOURCES) \
|
||||
$(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \
|
||||
$(rbt01_SOURCES) $(rbt02_SOURCES) $(rbt03_SOURCES) \
|
||||
$(rex01_SOURCES) $(sio01_SOURCES) $(sio02_SOURCES) \
|
||||
$(sio03_SOURCES) $(sll_SOURCES) $(slmb01_SOURCES) \
|
||||
@ -356,16 +361,16 @@ SOURCES = $(arr01_SOURCES) $(arr02_SOURCES) $(bh01_SOURCES) \
|
||||
$(str02_SOURCES) task01.c $(time_SOURCES) $(tre01_SOURCES) \
|
||||
uri01.c $(xma_SOURCES)
|
||||
DIST_SOURCES = $(am__arr01_SOURCES_DIST) $(am__arr02_SOURCES_DIST) \
|
||||
$(am__bh01_SOURCES_DIST) $(chr01_SOURCES) dir01.c \
|
||||
$(dll_SOURCES) $(env01_SOURCES) $(fio01_SOURCES) \
|
||||
$(fio02_SOURCES) $(fma_SOURCES) $(fmt01_SOURCES) \
|
||||
$(fmt02_SOURCES) $(fs01_SOURCES) fs02.c fs03.c \
|
||||
$(glob01_SOURCES) $(am__hl01_SOURCES_DIST) $(htb01_SOURCES) \
|
||||
$(am__htb02_SOURCES_DIST) $(ipad01_SOURCES) $(lda_SOURCES) \
|
||||
$(main01_SOURCES) $(main02_SOURCES) $(mbwc01_SOURCES) \
|
||||
$(mbwc02_SOURCES) $(nwad01_SOURCES) nwif01.c nwif02.c \
|
||||
$(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \
|
||||
$(rbt01_SOURCES) $(am__rbt02_SOURCES_DIST) \
|
||||
$(am__bh01_SOURCES_DIST) $(am__bh02_SOURCES_DIST) \
|
||||
$(chr01_SOURCES) dir01.c $(dll_SOURCES) $(env01_SOURCES) \
|
||||
$(fio01_SOURCES) $(fio02_SOURCES) $(fma_SOURCES) \
|
||||
$(fmt01_SOURCES) $(fmt02_SOURCES) $(fs01_SOURCES) fs02.c \
|
||||
fs03.c $(glob01_SOURCES) $(am__hl01_SOURCES_DIST) \
|
||||
$(htb01_SOURCES) $(am__htb02_SOURCES_DIST) $(ipad01_SOURCES) \
|
||||
$(lda_SOURCES) $(main01_SOURCES) $(main02_SOURCES) \
|
||||
$(mbwc01_SOURCES) $(mbwc02_SOURCES) $(nwad01_SOURCES) nwif01.c \
|
||||
nwif02.c $(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) \
|
||||
$(pma_SOURCES) $(rbt01_SOURCES) $(am__rbt02_SOURCES_DIST) \
|
||||
$(am__rbt03_SOURCES_DIST) $(rex01_SOURCES) $(sio01_SOURCES) \
|
||||
$(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \
|
||||
$(slmb01_SOURCES) $(am__sp01_SOURCES_DIST) \
|
||||
@ -601,6 +606,8 @@ xma_SOURCES = xma.c
|
||||
@ENABLE_CXX_TRUE@arr02_LDADD = $(LDADD) -lqsecmnxx
|
||||
@ENABLE_CXX_TRUE@bh01_SOURCES = bh01.cpp
|
||||
@ENABLE_CXX_TRUE@bh01_LDADD = $(LDADD) -lqsecmnxx
|
||||
@ENABLE_CXX_TRUE@bh02_SOURCES = bh02.cpp
|
||||
@ENABLE_CXX_TRUE@bh02_LDADD = $(LDADD) -lqsecmnxx
|
||||
@ENABLE_CXX_TRUE@hl01_SOURCES = hl01.cpp
|
||||
@ENABLE_CXX_TRUE@hl01_LDADD = $(LDADD) -lqsecmnxx
|
||||
@ENABLE_CXX_TRUE@htb02_SOURCES = htb02.cpp
|
||||
@ -704,6 +711,9 @@ arr02$(EXEEXT): $(arr02_OBJECTS) $(arr02_DEPENDENCIES) $(EXTRA_arr02_DEPENDENCIE
|
||||
bh01$(EXEEXT): $(bh01_OBJECTS) $(bh01_DEPENDENCIES) $(EXTRA_bh01_DEPENDENCIES)
|
||||
@rm -f bh01$(EXEEXT)
|
||||
$(AM_V_CXXLD)$(CXXLINK) $(bh01_OBJECTS) $(bh01_LDADD) $(LIBS)
|
||||
bh02$(EXEEXT): $(bh02_OBJECTS) $(bh02_DEPENDENCIES) $(EXTRA_bh02_DEPENDENCIES)
|
||||
@rm -f bh02$(EXEEXT)
|
||||
$(AM_V_CXXLD)$(CXXLINK) $(bh02_OBJECTS) $(bh02_LDADD) $(LIBS)
|
||||
chr01$(EXEEXT): $(chr01_OBJECTS) $(chr01_DEPENDENCIES) $(EXTRA_chr01_DEPENDENCIES)
|
||||
@rm -f chr01$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(chr01_OBJECTS) $(chr01_LDADD) $(LIBS)
|
||||
@ -855,6 +865,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arr01.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arr02.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bh01.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bh02.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chr01.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir01.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dll.Po@am__quote@
|
||||
|
@ -124,7 +124,7 @@ int main ()
|
||||
printf ("--------------------\n");
|
||||
h3.setCapacity (6);
|
||||
h3.insert (6, "good?");
|
||||
h3.rotate (1, h3.getSize() / 2);
|
||||
h3.rotate (StrArray::ROTATE_RIGHT, h3.getSize() / 2);
|
||||
printf ("[%s] [%s]\n", h3.getValueAt(5).getBuffer(), h3.getValueAt(6).getBuffer());
|
||||
printf ("%d\n", (int)h3.getSize());
|
||||
|
||||
|
@ -19,7 +19,7 @@ printf ("constructor %d\n", q);
|
||||
printf ("copy constructor %d\n", *q.x);
|
||||
}
|
||||
|
||||
#if (__cplusplus >= 201103L) // C++11
|
||||
#if defined(QSE_ENABLE_CPP11_MOVE)
|
||||
Julia (Julia&& q)
|
||||
{
|
||||
printf ("move constructor %d\n", *q.x);
|
||||
@ -50,7 +50,7 @@ printf ("operator= %d\n", *q.x);
|
||||
return *this;
|
||||
}
|
||||
|
||||
#if (__cplusplus >= 201103L) // C++11
|
||||
#if defined(QSE_ENABLE_CPP11_MOVE)
|
||||
Julia& operator= (Julia&& q)
|
||||
{
|
||||
if (this != &q)
|
||||
@ -83,11 +83,23 @@ int main ()
|
||||
a0.remove (2, 5);
|
||||
|
||||
a0.update (5, Julia(9999));
|
||||
#if (__cplusplus >= 201103L) // C++11
|
||||
#if defined(QSE_ENABLE_CPP11_MOVE)
|
||||
QSE::Array<Julia> a1 ((QSE::Array<Julia>&&)a0);
|
||||
#else
|
||||
QSE::Array<Julia> a1 (a0);
|
||||
#endif
|
||||
printf ("OK: %d %d\n", (int)a0.getSize(), (int)a1.getSize());
|
||||
|
||||
|
||||
for (qse_size_t i = 0; i < a1.getSize(); i++)
|
||||
{
|
||||
printf ("ITEM: %d => %d\n", (int)i, *a1[i].x);
|
||||
}
|
||||
printf ("----------------\n");
|
||||
a1.rotate (QSE::Array<Julia>::ROTATE_LEFT, 2);
|
||||
for (qse_size_t i = 0; i < a1.getSize(); i++)
|
||||
{
|
||||
printf ("ITEM: %d => %d\n", (int)i, *a1[i].x);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
90
qse/samples/cmn/bh02.cpp
Normal file
90
qse/samples/cmn/bh02.cpp
Normal file
@ -0,0 +1,90 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <qse/cmn/BinaryHeap.hpp>
|
||||
#include <qse/cmn/String.hpp>
|
||||
#include <qse/cmn/alg.h>
|
||||
#include <qse/cmn/time.h>
|
||||
|
||||
class Julia
|
||||
{
|
||||
public:
|
||||
Julia (int q = 0): x(QSE_NULL)
|
||||
{
|
||||
this->x = new int (q);
|
||||
}
|
||||
|
||||
Julia (const Julia& q): x(QSE_NULL)
|
||||
{
|
||||
this->x = new int (*q.x);
|
||||
}
|
||||
|
||||
#if defined(QSE_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 int (*q.x);
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
#if defined(QSE_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
|
||||
|
||||
bool operator> (const Julia& q) const { return *this->x > *q.x; }
|
||||
int* x;
|
||||
};
|
||||
|
||||
typedef QSE::BinaryHeap<Julia> JuliaHeap;
|
||||
|
||||
int main ()
|
||||
{
|
||||
JuliaHeap jh;
|
||||
qse_uint32_t x;
|
||||
qse_ntime_t nt;
|
||||
|
||||
qse_gettime (&nt);
|
||||
|
||||
x = nt.sec + nt.nsec;
|
||||
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
x = qse_rand31(x);
|
||||
jh.insert (Julia((int)x % 100));
|
||||
}
|
||||
|
||||
while (!jh.isEmpty())
|
||||
{
|
||||
printf ("%d\n", *jh.getValueAt(0).x);
|
||||
jh.remove (0);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user