summaryrefslogtreecommitdiffstats
path: root/labb6
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-12-02 17:09:37 +0100
committerGustav Sörnäs <gustav@sornas.net>2020-12-02 17:09:37 +0100
commit0a8d737eccc6bfdb6ad7b9aaa1f6fc7c5b84f1eb (patch)
treec32eb60e3b4ddfbb62b20a07d7e14be39a2d7e33 /labb6
parent16e8953dd3244e8822ee492bbccd1bc0e28470fa (diff)
downloadtddd86-0a8d737eccc6bfdb6ad7b9aaa1f6fc7c5b84f1eb.tar.gz
reference instead of by valuelab6
Diffstat (limited to 'labb6')
-rwxr-xr-xlabb6/src/encoding.cpp32
1 files changed, 14 insertions, 18 deletions
diff --git a/labb6/src/encoding.cpp b/labb6/src/encoding.cpp
index 81e8fe1..6d46fa4 100755
--- a/labb6/src/encoding.cpp
+++ b/labb6/src/encoding.cpp
@@ -49,36 +49,32 @@ HuffmanNode* buildEncodingTree(const map<int, int>& freq_table) {
return root;
}
-/*
- * Merge 'from' into 'to', overwriting if a key already exists.
- */
-template <typename T, typename U>
-void merge_map(map<T, U>& into, const map<T, U>& from) {
- for (const auto& element : from) {
- into[element.first] = element.second;
- }
-}
-
-map<int, string> encoding_map_helper(HuffmanNode *encoding_tree, const string& cur_string) {
- map<int, string> encoding_map;
+void encoding_map_helper(
+ map<int, string>& encoding_map,
+ HuffmanNode *encoding_tree,
+ const string& cur_string
+) {
if (encoding_tree) {
if (encoding_tree->isLeaf()) {
encoding_map[encoding_tree->character] = cur_string;
} else {
- encoding_map = encoding_map_helper(encoding_tree->zero,
- cur_string + "0");
- merge_map(encoding_map, encoding_map_helper(encoding_tree->one,
- cur_string + "1"));
+ encoding_map_helper(encoding_map,
+ encoding_tree->zero,
+ cur_string + "0");
+ encoding_map_helper(encoding_map,
+ encoding_tree->one,
+ cur_string + "1");
}
}
- return encoding_map;
}
/*
* Build a Huffman encoding map (char -> bit-string) from a Huffman tree.
*/
map<int, string> buildEncodingMap(HuffmanNode* encoding_tree) {
- return encoding_map_helper(encoding_tree, "");
+ map<int, string> encoding_map;
+ encoding_map_helper(encoding_map, encoding_tree, "");
+ return encoding_map;
}
/*