国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看

合肥生活安徽新聞合肥交通合肥房產(chǎn)生活服務(wù)合肥教育合肥招聘合肥旅游文化藝術(shù)合肥美食合肥地圖合肥社保合肥醫(yī)院企業(yè)服務(wù)合肥法律

代寫CS111 2025、C/C++程序設(shè)計(jì)代做
代寫CS111 2025、C/C++程序設(shè)計(jì)代做

時(shí)間:2025-06-04  來源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯(cuò)



CS111 2025 Spring Homework 2: 
Task 0 
For this program, the source code files appear in different folders: Algorithms, Core, IO, Utils, and each of them has its own Test folder containing a testing file.
Compare this organization with putting all files in a single folder. 
•Which approach is better for a project with many files, and why? 
•Consider aspects such as maintainability, compilation speed, teamwork, and ease of navigation.
Answer:  
Task 1: Answer the question.
In the Utils folder, you see files with .h, .hpp, .cpp, and .c extensions. Explain the typical use of each extension in a C++ project. When should you use .h vs .hpp, and .cpp vs .c?

Task 2: Answer the question.
In the Utils folder, according to the Makefile, the file c_utils.o (created by the C compiler gcc) will be linked with test_c_util.o (created by the C++ compiler g++). 
•How can this be done successfully? 
•What must be considered in the header files to ensure correct linkage? 

Task 3: Answer the question. 
There are three header files in the Utils folder:
•c_and_cpp_utils.hpp
•c_only_utils.h
•cpp_only_utils.hpp
What are the different intended uses of each file, and why? 
Task 4 
•In bit_stream.hpp, there is a line:
BitStream() = default;
Is this line needed? Why or why not? 
•Consider another similar case, doubly_linked_list.hpp, there is a line:
DoublyLinkedList() = default; 
Is this line needed? Why or why not? 

Task 5
In bit_stream.hpp, there is a line:
size_t size() const noexcept;
•Is the noexcept part proper or helpful here? Why or why not? 
•Discuss the implications of using noexcept regarding performance, correctness, and code design. 

Task 6
In the file, there are two lines: 
class BitProxy; 
BitProxy operator[](size_t index);
Why is the first line (class BitProxy;) needed?
Why does operator[] return a BitProxy object instead of a bool& or bool?
Compare this design to how operator[] works in standard containers like std::vector or arrays.

Task 7
Regarding the design of the BitStream as shown in the file bit_stream.hpp, why not simply use an array of bool to replace it? Explain. 
Regarding the design of the BitStream as shown in the file bit_stream.hpp, why not simply use an array of bool to replace it? Explain.
•Discuss the advantages and disadvantages of using an array of bool versus a BitStream.
•Consider aspects such as memory usage, performance, and practical implementation details, and relevance to the project. 

Task 8
In the file bit_stream.hpp, you will find the following declaration:
std::vector<uint8_t> data;
Suppose we replace uint8_t with char, i.e.,
std::vector<char> data;
•Would this change be appropriate? Why or why not? 
•Discuss the implications of using char instead of uint8_t for storing raw bit data, considering type safety, portability, and clarity.

Task 9
In bit_stream.cpp, consider the function definition of append_internal. 
a.) Explain the meaning of the following code:
 if (byte_index >= data.size()) { 
        data.push_back(0); 
    }
b.) Provide the missing statements in the following code, and briefly explain what your code does:
    if (bit) {
          // code missing
    } else {
         // code missing
    }

Task 10
In the file bit_stream.cpp, in the definition of the function write_to_file, there are two lines:
const uint64_t bit_count = end_pos - start_pos; 
file.write(reinterpret_cast<const char*>(&bit_count), sizeof(bit_count));
Explain these two lines of statements. 

Task 11
In the file bit_stream.cpp, in the function read_from_file, there is a loop to read the bits one by one from the file.
 for (uint8_t byte : buffer) { 
            for (int bit_pos = 7; bit_pos >= 0 && bits_added < bit_count; --bit_pos) { 
                append_internal((byte >> bit_pos) & 1); 
                bits_added++; 
            } 
        }
Is this necessary? Why not simply read a sequence of uint8_t bytes from the file and save them into the BitStream object? Why?

Task 12 
In doubly_linked_list.hpp, there are lines to assign values to members that are not part of a constructor, like:
Node* head = nullptr; 
Node* tail = nullptr; 
size_t len = 0;
What is the meaning of these, and why are these allowed? How does this differ from initializing these members in the constructor’s initializer list?

Task 13 
In doubly_linked_list.hpp, the structure Node is declared in the public section of the class. Compared to another choice, putting this declaration in a private section of the class, what are the advantages and disadvantages of these two choices? Which is better for this project, and why? 

Task 14
In doubly_linked_list.hpp, consider the constructor of Node:
explicit Node(const T&& val) : ... 
What is the meaning of this? When does the method of the DoublyLinkedList class call this constructor of Node? 

Task 15
In doubly_linked_list.hpp, in the function link_node, the code part for inserting a new node before an existing node is missing. Provide the missing code.
•You can put it in both places, here in this report file, and in the missing-code place in doubly_linked_list.hpp. 

Task 16 
In doubly_linked_list, there is a template function:
template<typename U>  
  void insert_back(U&& value) {
      link_node(new Node(std::forward<U>(value)), tail, false);
  }
What is the meaning of calling the forward function here?

Task 17 
Since the insert_back function appears in the template class DoublyLinkedList, it is automatically a template function. So, maybe the template type name can be ignored and shared with the template type name T of the class. Then, can we use the following function? Why? 
  void insert_back(T&& value) {
      link_node(new Node(std::forward<T>(value)), tail, false);
  }

Task 18
How about writing the insert_back function as follows:
  template <typename T>
  void insert_back(T&& value) {
      link_node(new Node(std::forward<T>(value)), tail, false);
  }
Is it ok? Why? 

Task 19
In the file linked_list_and_priority_queue_tests.cpp, we see a range-based for loop: 
for (auto& item : list) {
        forward.push_back(item);
        std::cout << item << " " << "pushed back" << " forwardly " <<std::endl;
}
Here list is an object of the DoublyLinkedList class. Why is the range-based for loop supported here?
Alternatively, for a class X to support range-based for loop, what are the requirements of X?

Task 20
In doubly_linked_list.hpp, inside the iterator class, 
there is a statement: 
using iterator_category = std::bidirectional_iterator_tag;
Which header file is needed for this statement? 
How about a typedef in this line, like:
typedef std::bidirectional_iterator_tag iterator_category ; 
Which is better, and why? 

Task 21
The type alias iterator_category, which is defined in doubly_linked_list.hpp, is not used in the program. Why is it needed or useful? 

Task 22 
In the file priority_queue.hpp, the template class PriorityQueue is declared as follows:
template < 
    typename T, 
    typename Compare = std::greater<T>, 
    //template <typename, typename> class Container = VectorHeapContainer 
    // Use the VectorHeapContainer for faster performance.  
    template <typename, typename> class Container = OrderedLinkedListContainer 

class PriorityQueue { 
    //... 
};
By observing this code snippet, we should have learned something. Answer the following questions: 
•When a template class has a template parameter that is also another template class, how do you express the code?
•How do you specify the default choice of a template parameter?

Task 23
In priority_queue.hpp, by observing, the PriorityQueue class can use any template class that satisfies some specific requirements, working as the container. Briefly describe what these requirements are. 

Task 24
The requirements for a possible container class are similar to the concepts of interface and the is-a relationship, which the public inheritance mechanism can describe. 
Sketch some design: a Container class that describes these requirements, so that any derived class of the Container class can be used by the PriorityQueue, which is adjusted accordingly. 
Bonus Points if the adjusted program can compile and run correctly. 

Task 25
In priority_queue.hpp, in the class OrderedLinkedListContainer, in the insert function, there is a statement.
static_assert(
            std::is_convertible<typename std::decay<U>::type, T>::value, // C++11 syntax
            "calling OrderedLinkedListContainer::insert() with data of type U. Type U must be implicitly convertible to T");
What is the meaning of this statement? Explain in terms of the usage of:
•is_convertible
•std::decay
•and std::static_assert; 
Is it similar to some validation function defined in this program? What are the differences? 
Task 26
In the file priority_queue.hpp, inside the class OrderedLinkedListcontainer, in the insert function, there is a statement missing, which is to locate the iterator it to the first place where the value is larger than the data of it or it reaches the end. 
Provide the missing code (write the code here and in the . hpp file)

Task 27 
In doubly_linked_list.hpp, in the class DoublyLinkedList, there are two iterator classes, iterator and const_iterator, defining the same overloaded operators. Why do we need these iterator classes ? Alternatively, asking, what would happen if only one iterator type were provided?

Task 28
In doubly_linked_list.hpp, the arrow operator -> will return a pointer. Explain how it works. Alternatively, explain, given the following sketch of statements:
iterator it = ...;
it->some_member; 
What is an expression equivalent to it->some_member? 

Task 29
The -- operator has a prefix version and a postfix version. How are the two operator functions declared differently, as shown in doubly_linked_list.hpp? A similar mechanism can overload the ++ operators. 

Task 30
In the file link_list_and_priority_queue_tests.cpp. Two macros, TEST_FUNCTION and END_TEST, are defined. Some tests are carried out and the number of passing and failure are recorded. This mechanism is similarly used in the huffman_tests.cpp in the Algorithms folder. Describe this pattern of writing and testing code. What is the advantage of doing so? 

Task 31:
In the file IO/Bit_stream/bit_stream.hpp
For the class BitStream, we observe that the BitProxy class has no copy constructor or copy assignment. 
•Is defining these special methods (with copy semantics) problematic for this class? Why? 
•If we want to turn off using these methods for this class explicitly, how do we do it? 
–Discuss the legacy way and/or a modern C++ way.

Task 32:
In the file huffman_tree.hpp. The two concrete classes LeafNode and InternalNode share the same base class Node. What are the advantages and usefulness of this design? Consider the print_huffman_tree function defined in the huffman_tree.cpp as an example for the explanation. 

Task 33:
In huffman_tree.hpp, in the classInternalNode, its two members left and right are unique pointers: 
const std::unique_ptr<HuffmanNode> left;
const std::unique_ptr<HuffmanNode> right;
Why are these unique pointers proper? Comparing using raw pointers for left and right, what are the advantages/disadvantages? 

Task 34:
In huffman_tree.cpp, in the print_huffman_tree definition, the code in the else block is missing, which should handle the recursive case of the function. It will print the left subtree, the internal node (the root of the subtree), and the right subtree. Provide the missing code. 
•Write missing statements in the .cpp file, and also paste them here. 

Task 35:
In huffman_algorithm.cpp, in the function string_to_frequence_map, a part is missing, which is to compute the count of each character in a string text. 
Provide the missing code in the .cpp file and paste the lines here in this report file. 

Task 36:
In huffman_tree.cpp, in the constructor of HuffmanTree, which builds a tree based on a frequency map (the parameter), there are missing parts of code. 
•Provide code for both (a) inserting leaf nodes into the priority queue and (b) combining nodes to build the tree.
–The comments in the file are helpful.
–Put the missing code in the .cpp file and here in the report document.
•Explain in Part (b) why is needed when combining nodes?

Task 37:
In huffman_algorithm.cpp, in the function buildwere_table, why need to handle the special case that, if the prefix is empty, push afalseinto theprefix`? What would happen if this special case was not handled?

Task 38:
In huffman_algorithm.cpp, for the class HuffmanEncoder, the body is missing for the method encod. Write the missing code of the body. 
•Hint: The comments in the function are helpful. 
•Paste the code in the .cpp file and also here in this report file. 

Task 39:
In huffman_algorithm.cpp, for the class HuffmanDecoder, the method decode, a loop is missing. Provide the missing code. 
•Hint: the comments in the function are helpful. 
•Paste the code in the .cpp file and also here in this report file. 

Task 40:
Based on your code, 
•During the encoding process, what will happen if there is a character in the string that is not in a leaf of the tree, therefore is not included in the encoding table? 
•Any idea to solve the problem? 
•Bonus , modify the code so that this problem be solved. 

Task 41:
In huffman_tree.cpp, in the constructor of HuffmanTree, we see a line:
PriorityQueue<std::unique_ptr<HuffmanNode>, CompareNodes> pq;
So, the HuffmanTree object will always choose the default container choice of PriorityQueue. That is, there is no way to have two HuffmanTree objects simultaneously using different containers for their PriorityQueue.
How can the HuffmanTree declaration be modified so that different kinds of containers can possibly be used? Describe your idea.
Bonus: Compile and test the modified code. 

Task 42
Based on a Makefile that you possibly want to use, explain the meaning of the following two rules: 
1.
bit_stream.o: ../../IO/Bit_stream/bit_stream.cpp
    $(CXX) $(CXXFLAGS) -c $< -o $@
1.
bit_stream_tests: bit_stream_tests.o bit_stream.o
    $(CXX) $(CXXFLAGS) -o $@ $^
1.
all_exe: huffman_tests linked_list_and_priority_queue_tests \
         bit_stream_tests c_utils_tests
4.
clean_o:
    rm -f *.o

Task 43: Compilation and Execution 
•Compile the program using the provided Makefile for your OS (Linux/MAC/Windows). 
•Run and test all your generated executable files. 
–If there are some errors and you can not fix them, describe the errors here. 
Deliverable: 
a) Paste a screenshot of your terminal showing: 
•Simply type your name, and the terminal will ignore it as a wrong command 
•The compilation command that uses a Makefile. 
–You may use make or mingw32-make. 
Paste the image in this report. 
A sample screenshot could show something like: 
  \Huffman_code_program\Build\Windows_g++> my name is LI, BAI
'my' is not recognized as an internal or external command,
operable program or batch file.

\Huffman_code_program\Build\Windows_g++> mingw32-make
g++ -c ../../IO/Bit_stream/bit_stream.cpp -o bit_stream.o
g++ -o bit_stream_tests bit_stream_tests.o bit_stream.o
...
b) a screen shot of running an exectuable file. Paste the image in this report. 
c) [optional]: redirect output to a file, like: 
\Huffman_code_program\Build\Windows_g++>huffman_tests.exe > huffman_tests_output.txt
 Upload test ouptut .txt files together with the report file. 

Task 44
[optional]
Describe any other extra work that worth bonus points. 

Task 45
Summarize your experience, what you have learned in this project. You may think in the aspects like: 
•The specific C++ features you found valuable: design patterns, skills of debugging, testing and compiling skills ... 
•How will this experience help you in future programming projects? 
•How this project can assist a future Data Structure and algorithm course? 

Submission Instructions: 
Submit the folloing files: 
1.The completed report file (Word/PDF) with answers 
2.A .zip file made by compressing the whole program folder, which contain all subfolders as distributed by this homework. The folder should contain all your modified program files. 
3.Other supporting files, like
•the executing output recording files. 
•... 

請(qǐng)加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp

掃一掃在手機(jī)打開當(dāng)前頁
  • 上一篇:代寫MIT203、代做SQL編程設(shè)計(jì)
  • 下一篇:FIT2004代寫、代做FIT2004語言編程
  • 無相關(guān)信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路流場仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真技術(shù)服務(wù)
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲勞振動(dòng)
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)40個(gè)行業(yè)
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)4
    超全面的拼多多電商運(yùn)營技巧,多多開團(tuán)助手,多多出評(píng)軟件徽y1698861
    超全面的拼多多電商運(yùn)營技巧,多多開團(tuán)助手
    CAE有限元仿真分析團(tuán)隊(duì),2026仿真代做咨詢服務(wù)平臺(tái)
    CAE有限元仿真分析團(tuán)隊(duì),2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內(nèi)
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗(yàn)證碼 寵物飼養(yǎng) 十大衛(wèi)浴品牌排行 suno 豆包網(wǎng)頁版入口 wps 目錄網(wǎng) 排行網(wǎng)

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網(wǎng) 版權(quán)所有
    ICP備06013414號(hào)-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    欧美国产综合视频| 日本香蕉视频在线观看| 99www免费人成精品| 国产免费视频传媒| 国产欧美久久久久| 国产精品自产拍高潮在线观看| 国产午夜福利在线播放| 国产又大又长又粗又黄| 国产一区在线播放| 国产精选久久久久久| 国产精品亚洲不卡a| 国产视频99| 成人欧美一区二区三区黑人免费| 精品免费二区三区三区高中清不卡| 国产在线视频91| 国产精品免费在线| 日韩av综合在线观看| 亚洲精品一区二区三区樱花| 天天综合五月天| 欧美伊久线香蕉线新在线| 欧美精品色婷婷五月综合| 美女主播视频一区| 高清视频欧美一级| 久久久女女女女999久久| 国产av熟女一区二区三区| 国产精品日韩三级| 精品久久中出| 亚洲一区免费看| 视频一区二区视频| 欧美成人一区二区在线观看| 成人一级生活片| 久久精品丝袜高跟鞋| 国产精品久久久久久亚洲影视| 久久国产精品99国产精| 亚洲7777| 黄色一级片国产| av免费中文字幕| 国产成人免费高清视频| 欧美日韩不卡合集视频| 日本精品久久久久影院| 精品一区二区国产| 国产精品1区2区在线观看| 久久九九精品99国产精品| 亚洲最大av在线| 欧美日韩免费精品| 91精品国产九九九久久久亚洲| 国产精品区一区二区三含羞草 | 日韩精品欧美一区二区三区| 黄色网络在线观看| 99久久自偷自偷国产精品不卡 | 日批视频在线免费看| 欧美性受xxxx黑人猛交| 99在线看视频| 欧美伦理91i| 欧美在线观看一区二区三区| 超碰97国产在线| 国产精品久久久久7777| 日本丰满少妇黄大片在线观看| 国产精品一区二区三区久久| 国产精品久久久久久久久久小说 | 色综合影院在线观看| 精品一区二区三区日本| 久草青青在线观看| 性欧美亚洲xxxx乳在线观看 | 美女被啪啪一区二区| 久草青青在线观看| 欧美一级免费在线观看| 国产精品小说在线| 久久成人精品视频| 国内揄拍国内精品| 久久精品国产久精国产一老狼| 色之综合天天综合色天天棕色| 国产亚洲精品美女久久久m| 久久九九热免费视频| 日韩激情视频一区二区| 久久久亚洲影院你懂的| 亚洲免费av网| 99在线视频免费观看| 久操成人在线视频| 精品一区国产| 国产精品国产三级国产专区53 | 国产另类自拍| 久久成人精品视频| 国内精品国产三级国产在线专 | 国产精品免费久久久| 日本高清视频一区二区三区| 国产精品99久久久久久久| 亚洲一区二区在线看| www.国产二区| 亚洲中文字幕无码中文字| 国产精品一区二区电影| 欧美日韩成人在线播放| 国产欧美一区二区三区久久人妖 | 日韩在线xxx| 久久精品在线视频| 国产精品免费久久久久影院| 欧美日韩亚洲一区二区三区四区 | 国产免费毛卡片| 色噜噜狠狠狠综合曰曰曰88av| 亚洲在线免费看| 国产精品一区二区三区久久久| 国产一区二区三区乱码| 欧美日韩系列| 国产成人精品视频在线| 欧美精品久久久久久久自慰| 国产成人欧美在线观看| 黄页免费在线观看视频| 久久6精品影院| 国产一区视频在线| 中文字幕99| 91麻豆国产精品| 日韩av不卡在线播放| 日韩视频―中文字幕| 国模无码视频一区二区三区| 欧美精品第一页在线播放| 97国产suv精品一区二区62| 日韩av不卡在线| 国产精品沙发午睡系列| 国产精品一区二区三区免费| 视频在线99| 国产精品免费一区二区三区都可以| 国产日韩精品久久| 日韩av免费看网站| 久久久国产视频| 国产伦精品一区二区三区四区免费| 亚洲成色www久久网站| 久久精品国产亚洲| 成人免费在线网| 人人干视频在线| 欧美激情区在线播放| 国产高清精品在线观看| 精品无码久久久久久久动漫| 亚洲免费在线精品一区| 久久天天躁狠狠躁夜夜av| 成人av免费在线看| 欧美日韩一区二区三区免费 | 亚洲精品国产精品国自产| 色噜噜狠狠狠综合曰曰曰 | 国产青草视频在线观看| 日本免费一级视频| 久久91精品国产91久久久| 国产成人一区二区三区免费看| 免费看国产一级片| 日本视频久久久| 一区不卡字幕| 国产精品国产亚洲伊人久久| 久久精品午夜福利| 成人精品久久一区二区三区| 妓院一钑片免看黄大片| 亚洲精品成人自拍| 不卡中文字幕av| 日韩视频在线观看免费| 97精品一区二区三区| 麻豆中文字幕在线观看| 日韩成人在线资源| 亚洲精品偷拍视频| 蜜臀久久99精品久久久无需会员 | 精品视频9999| 国产成人精品一区二区三区福利| av一区观看| 国产一级黄色录像片| 欧美亚州在线观看| 日本在线成人一区二区| 中文视频一区视频二区视频三区| 久久精品中文字幕一区| 久久精品日韩| 久久综合色视频| 9a蜜桃久久久久久免费| 国产日韩欧美在线看| 欧美精品一区在线| 日韩视频在线观看国产| 亚洲aaa激情| 亚洲色婷婷久久精品av蜜桃| 国产精品免费一区二区三区观看| 久久精精品视频| 久久综合福利| 91精品视频在线免费观看| 国产欧美日韩亚洲| 国产自产女人91一区在线观看| 欧美日韩国产三区| 欧美专区在线播放| 日韩女优人人人人射在线视频| 亚洲在线不卡| 亚洲成人第一| 亚洲精品一区二区三区av| 亚洲最新免费视频| 一本一生久久a久久精品综合蜜| 欧美猛交ⅹxxx乱大交视频| 久久国产精品99国产精| 久久91亚洲精品中文字幕奶水| 久久亚洲国产精品| 国产精品观看在线亚洲人成网| 久久好看免费视频| 久久久精品国产一区二区| 久久九九亚洲综合| 国产精品久久久久不卡| 色综合久综合久久综合久鬼88| 欧美激情在线一区| 亚洲一区 在线播放| 亚洲制服中文|