2018年02月11日
《その287》 問題演習 p.375演習10-2
新版明解C++中級編 p.375 演習10-2
下記の課題プログラムでは、出力が、
x = { 1 2 3 4 5 }
y = { 3.5 7.3 2.2 9.9 }
z = { abc WXYZ 123456 }
のようになる。これを、
x = {1, 2, 3, 4, 5}
y = {3.5, 7.3, 2.2, 9.9}
z = {abc, WXYZ, 123456}
という形式で表示するように、関数テンプレートをのコードを変更せよ。
// 課題プログラム
#include <string>
#include <vector>
#include <iostream>
using namespace std;
template <class T, class Allocator>
void print_vector(const vector<T, Allocator>& v)
{
cout << "{ ";
for (unsigned i = 0; i != v.size(); i++)
cout << v[i] << ' ';
cout << '}';
}
int main()
{
int a[] = { 1, 2, 3, 4, 5 };
vector<int> x(a, a + sizeof(a) / sizeof(a[0]));
double b[] = { 3.5, 7.3, 2.2, 9.9 };
vector<double> y(b, b + sizeof(b) / sizeof(b[0]));
string c[] = { "abc", "WXYZ", "123456" };
vector<string> z(c, c + sizeof(c) / sizeof(c[0]));
cout << "x = "; print_vector(x); cout << '\n';
cout << "y = "; print_vector(y); cout << '\n';
cout << "z = "; print_vector(z); cout << '\n';
}
// 解答
#include <string>
#include <vector>
#include <iostream>
using namespace std;
template <class T, class Allocator>
void print_vector(const vector<T, Allocator>& v)
{
cout << '{';
for (unsigned i = 0; i < v.size() - 1; i++)
cout << v[i] << ", ";
cout << v[v.size() - 1] << '}';
}
int main()
{
int a[] = { 1, 2, 3, 4, 5 };
vector<int> x(a, a + sizeof(a) / sizeof(a[0]));
double b[] = { 3.5, 7.3, 2.2, 9.9 };
vector<double> y(b, b + sizeof(b) / sizeof(b[0]));
string c[] = { "abc", "WXYZ", "123456" };
vector<string> z(c, c + sizeof(c) / sizeof(c[0]));
cout << "x = "; print_vector(x); cout << '\n';
cout << "y = "; print_vector(y); cout << '\n';
cout << "z = "; print_vector(z); cout << '\n';
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7305768
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック