fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5.  
  6. template<class T> vector<T> * addition_of_vectors(vector<T>& first_vector,
  7. vector<T>& second_vector) {
  8. vector<T> *addition_result_vector = 0; // = NULL; or = nullptr; depends on using c++ standart
  9. if (first_vector.size() == second_vector.size()) {
  10. addition_result_vector = new vector<T>(first_vector.size());
  11. for (int i = 0; i < first_vector.size(); ++i) {
  12. (*addition_result_vector)[i] = first_vector[i] + second_vector[i];
  13. }
  14. } else {
  15. cout << "The sizes of vectors aren't equal!";
  16. }
  17. return addition_result_vector;
  18. }
  19.  
  20.  
  21. int main() {
  22. cout << "Test of template function " << endl;
  23.  
  24. cout << "Creating first integer vector " << endl;
  25. std::vector<int> first_integer_vector;
  26. first_integer_vector.push_back(5);
  27. first_integer_vector.push_back(20);
  28. cout << "First integer vector created" << endl;
  29.  
  30. cout << "Creating second integer vector " << endl;
  31. std::vector<int> second_integer_vector;
  32. second_integer_vector.push_back(11);
  33. second_integer_vector.push_back(3);
  34. cout << "Second integer vector created" << endl;
  35.  
  36. cout << "Calling function \"addition_of_vectors\"";
  37. std::vector<int> *pointer_to_addition_result_vector = addition_of_vectors(
  38. first_integer_vector, second_integer_vector);
  39. cout << "Function called";
  40.  
  41.  
  42. if (pointer_to_addition_result_vector) { //Only if function returned some address
  43. cout << "Result vector pointer : " << pointer_to_addition_result_vector
  44. << endl;
  45. for (int i = 0; i < (*pointer_to_addition_result_vector).size(); ++i) {
  46.  
  47. cout << "result[" << i << "] = "
  48. << (*pointer_to_addition_result_vector)[i] << endl;
  49. }
  50. delete pointer_to_addition_result_vector; // prevent memory leaks
  51. pointer_to_addition_result_vector = 0; // prevent usage of pointer with invalid address
  52. } else {
  53. cout << "Error : pointer to addition result vector is null";
  54. }
  55. cout << "Test finished" << endl;
  56. return 0;
  57. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
Test of template function 
Creating first integer vector 
First integer vector created
Creating second integer vector 
Second integer vector created
Calling function "addition_of_vectors"Function calledResult vector pointer : 0x8f7d008
result[0] = 16
result[1] = 23
Test finished