免费创网站,免费静态网页,网站建设是虚拟行业吗,云南省文章目录练习3.21练习3.22练习3.23练习3.24练习3.25练习3.26练习3.27练习3.28练习3.29练习3.30练习3.21 请使用迭代器重做3.3.3节的第一个练习。 #include vector
#include iterator
#include string
#include iostreamusing std::vector;
usi…
文章目录练习3.21练习3.22练习3.23练习3.24练习3.25练习3.26练习3.27练习3.28练习3.29练习3.30练习3.21 请使用迭代器重做3.3.3节的第一个练习。 #include vector
#include iterator
#include string
#include iostreamusing std::vector;
using std::string;
using std::cout;
using std::endl;void check_and_print(const vectorint vec)
{cout size: vec.size() content: [;for (auto it vec.begin(); it ! vec.end(); it)cout *it (it ! vec.end() - 1 ? , : );cout ]\n endl;
}void check_and_print(const vectorstring vec)
{cout size: vec.size() content: [;for (auto it vec.begin(); it ! vec.end(); it)cout *it (it ! vec.end() - 1 ? , : );cout ]\n endl;
}int main()
{vectorint v1;vectorint v2(10);vectorint v3(10, 42);vectorint v4{ 10 };vectorint v5{ 10, 42 };vectorstring v6{ 10 };vectorstring v7{ 10, hi };check_and_print(v1);check_and_print(v2);check_and_print(v3);check_and_print(v4);check_and_print(v5);check_and_print(v6);check_and_print(v7);return 0;
}练习3.22 修改之前那个输出text第一段的程序首先把text的第一段全部改成大写形式然后输出它。 #include iostream
#include vector
#include cctype
#include stringusing namespace std;int main()
{vectorstring text;text.push_back(aaaaaaaaaa aaaaaaaaa aaaaaa);text.push_back();text.push_back(bbbbbbbbbbbbbb bbbbbbbbbbb bbbbbbbbbbbbb);for (auto it text.begin(); it ! text.end() !it-empty(); it){for (auto c : *it){if (isalpha(c)) c toupper(c);}}for (auto it : text){cout it endl;}return 0;
}
Footer
练习3.23 编写一段程序创建一个含有10个整数的vector对象然后使用迭代器将所有元素的值都变成原来的两倍。输出vector对象的内容检验程序是否正确。 #include iostream
#include vectorusing namespace std;int main()
{vectorint ivec(10, 42);for (auto it : ivec){it it * 2;cout it endl;}return 0;
}练习3.24 请使用迭代器重做3.3.3节的最后一个练习。 #include iostream
#include string
#include cctype
#include vectorusing std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;int main()
{vectorint ivec;int i;while (cin i){ivec.push_back(i);}for (auto it ivec.begin(); it ! ivec.end() - 1; it){cout *it *(it 1) endl;}//---------------------------------cout --------------------------------- endl;auto it1 ivec.begin();auto it2 ivec.end() - 1;while (it1 it2){cout *it1 *it2 endl;it1;--it2;}return 0;
}练习3.25 3.3.3节划分分数段的程序是使用下标运算符实现的请利用迭代器改写该程序实现完全相同的功能。 #include vector
#include iostreamusing std::vector;
using std::cout;
using std::cin;
using std::endl;int main()
{vectorunsigned scores(11, 0);unsigned grade;while (cin grade){if (grade 100)*(scores.begin() grade / 10);}for (auto s : scores)cout s ;cout endl;return 0;
}练习3.26 在100页的二分搜索程序中为什么用的是 mid beg (end - beg) / 2, 而非 mid (beg end) / 2 ; ? 因为迭代器支持的运算只有 - 而没有 。end - beg 意思是相距若干个元素将之除以2然后与beg相加表示将beg移动到一半的位置。
练习3.27 假设txt_size 是一个无参函数它的返回值是int。请回答下列哪个定义是非法的为什么 unsigned buf_size 1024;
(a) int ia[buf_size];
(b) int ia[4 * 7 - 14];
(c) int ia[txt_size()];
(d) char st[11] fundamental;(a) 非法。纬度必须是一个常量表达式。(b) 合法。© 非法。txt_size() 的值必须要到运行时才能得到。(d) 非法。数组的大小应该是12。
练习3.28 下列数组中元素的值是什么 string sa[10];
int ia[10];
int main() {string sa2[10];int ia2[10];
}数组的元素会被默认初始化。sa 的元素值全部为空字符串ia 的元素值全部为0。sa2 的元素值全部为空字符串ia2 的元素值全部未定义。
练习3.29 相比于vector 来说数组有哪些缺点请例举一些。 数组的大小是确定的。不能随意增加元素不允许拷贝和赋值
练习3.30 指出下面代码中的索引错误。 constexpr size_t array_size 10;
int ia[array_size];
for (size_t ix 1; ix array_size; ix)ia[ix] ix;当 ix 增长到 10 的时候ia[ix] 的下标越界。