This commit is contained in:
Antti H S Laaksonen 2016-12-31 15:38:55 +02:00
parent 2f9a1d8bac
commit 03c12213d9
1 changed files with 23 additions and 25 deletions

View File

@ -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"));