Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
nexedi
cython
Commits
eedf8d9c
Commit
eedf8d9c
authored
6 years ago
by
gabrieldemarmiesse
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added an example of primes with vector in C++ since it's clode to the Python list API.
parent
2f3ee7ad
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
0 deletions
+52
-0
docs/examples/tutorial/primes/primes_cpp.pyx
docs/examples/tutorial/primes/primes_cpp.pyx
+21
-0
docs/src/tutorial/cython_tutorial.rst
docs/src/tutorial/cython_tutorial.rst
+31
-0
No files found.
docs/examples/tutorial/primes/primes_cpp.pyx
0 → 100644
View file @
eedf8d9c
# distutils: language=c++
from
libcpp.vector
cimport
vector
def
primes
(
int
nb_primes
):
cdef
int
n
,
i
cdef
vector
[
int
]
p
p
.
reserve
(
nb_primes
)
# allocate memory for 'nb_primes' elements.
n
=
2
while
p
.
size
()
<
nb_primes
:
# size() for vectors is similar to len()
for
i
in
p
:
if
n
%
i
==
0
:
break
else
:
p
.
push_back
(
n
)
# push_back is similar to append()
n
+=
1
# Vectors are automatically converted to Python
# lists when converted to Python objects.
return
p
This diff is collapsed.
Click to expand it.
docs/src/tutorial/cython_tutorial.rst
View file @
eedf8d9c
...
@@ -331,6 +331,37 @@ everywhere. Adding types makes your code less readable, so use them with
...
@@ -331,6 +331,37 @@ everywhere. Adding types makes your code less readable, so use them with
moderation.
moderation.
Primes with C++
===============
With Cython, it is also possible to take advantage of the C++ language, notably,
part of the C++ standard library is directly importable from Cython code.
Let's see what our :file:`primes.pyx` becomes when
using `vector <http://en.cppreference.com/w/cpp/container/vector>`_ from the C++
standard library.
.. note::
Vector in C++ is a data structure which represents
a `stack <https://en.wikipedia.org/wiki/Stack_(abstract_data_type)>`_.
There is a method `reserve` available which will avoid copies if you know in advance
how many elements you are going to put in the vector. For more details
see `this page from cppreference <http://en.cppreference.com/w/cpp/container/vector>`_.
.. literalinclude:: ../../examples/tutorial/primes/primes_cpp.pyx
:linenos:
The first line is a compiler directive. It tells Cython to compile your code to C++.
This will enable the use of the C++ standard library.
Note that this isn't possible to compile Cython code to C++ with `pyximport`. You
should use a :file:`setup.py` or a notebook to run this example.
You can see that the API of a vector is similar to the API of a Python list,
and can sometimes be used as a drop-in replacement in Cython.
For more details about using C++ with Cython, see :ref:`wrapping-cplusplus`.
Language Details
Language Details
================
================
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment