Bitset
This commit is contained in:
parent
2f9a1d8bac
commit
03c12213d9
48
luku04.tex
48
luku04.tex
|
@ -478,17 +478,17 @@ the element nearest to $x$ is either the
|
||||||
element that corresponds to $a$ or the previous element.
|
element that corresponds to $a$ or the previous element.
|
||||||
\end{samepage}
|
\end{samepage}
|
||||||
|
|
||||||
\section{Muita tietorakenteita}
|
\section{Other data structures}
|
||||||
|
|
||||||
\subsubsection{Bittijoukko}
|
\subsubsection{Bitset}
|
||||||
|
|
||||||
\index{bittijoukko@bittijoukko}
|
\index{bitset}
|
||||||
\index{bitset@\texttt{bitset}}
|
\index{bitset@\texttt{bitset}}
|
||||||
|
|
||||||
\key{Bittijoukko} (\texttt{bitset}) on taulukko,
|
A \key{bitset} (\texttt{bitset}) is an array
|
||||||
jonka jokaisen alkion arvo on 0 tai 1.
|
where each element is either 0 or 1.
|
||||||
Esimerkiksi
|
For example, the following code creates
|
||||||
seuraava koodi luo bittijoukon, jossa on 10 alkiota.
|
a bitset that contains 10 elements:
|
||||||
\begin{lstlisting}
|
\begin{lstlisting}
|
||||||
bitset<10> s;
|
bitset<10> s;
|
||||||
s[2] = 1;
|
s[2] = 1;
|
||||||
|
@ -499,37 +499,35 @@ cout << s[4] << "\n"; // 0
|
||||||
cout << s[5] << "\n"; // 1
|
cout << s[5] << "\n"; // 1
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
Bittijoukon etuna on, että se vie tavallista
|
The benefit in using a bitset is that
|
||||||
taulukkoa vähemmän muistia,
|
it requires less memory than a regular array,
|
||||||
koska jokainen alkio vie
|
because each element in the bitset only
|
||||||
vain yhden bitin muistia.
|
uses one bit of memory.
|
||||||
Esimerkiksi $n$ bitin tallentaminen
|
For example,
|
||||||
\texttt{int}-taulukkona vie $32n$
|
if $n$ bits are stored as an \texttt{int} array,
|
||||||
bittiä tilaa, mutta bittijoukkona
|
$32n$ bits of memory will be used,
|
||||||
vain $n$ bittiä tilaa.
|
but a corresponding bitset only requires $n$ bits of memory.
|
||||||
Lisäksi bittijoukon sisältöä
|
In addition, the values in a bitset
|
||||||
voi käsitellä tehokkaasti bittioperaatioilla,
|
can be efficiently manipulated using
|
||||||
minkä ansiosta sillä voi tehostaa algoritmeja.
|
bit operators, which makes it possible to
|
||||||
|
optimize algorithms.
|
||||||
Seuraava koodi näyttää toisen tavan
|
|
||||||
bittijoukon luomiseen:
|
|
||||||
|
|
||||||
|
The following code shows another way to create a bitset:
|
||||||
\begin{lstlisting}
|
\begin{lstlisting}
|
||||||
bitset<10> s(string("0010011010"));
|
bitset<10> s(string("0010011010"));
|
||||||
cout << s[4] << "\n"; // 0
|
cout << s[4] << "\n"; // 0
|
||||||
cout << s[5] << "\n"; // 1
|
cout << s[5] << "\n"; // 1
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
Funktio \texttt{count} palauttaa
|
The function \texttt{count} returns the number
|
||||||
bittijoukon ykkösbittien määrän:
|
of ones in the bitset:
|
||||||
|
|
||||||
\begin{lstlisting}
|
\begin{lstlisting}
|
||||||
bitset<10> s(string("0010011010"));
|
bitset<10> s(string("0010011010"));
|
||||||
cout << s.count() << "\n"; // 4
|
cout << s.count() << "\n"; // 4
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
Seuraava koodi näyttää esimerkkejä
|
The following code shows examples of using bit operations:
|
||||||
bittioperaatioiden käyttämisestä:
|
|
||||||
\begin{lstlisting}
|
\begin{lstlisting}
|
||||||
bitset<10> a(string("0010110110"));
|
bitset<10> a(string("0010110110"));
|
||||||
bitset<10> b(string("1011011000"));
|
bitset<10> b(string("1011011000"));
|
||||||
|
|
Loading…
Reference in New Issue