您的位置:首页 > 编程语言 > C语言/C++

c++primer第九章习题(3)

2015-11-04 18:50 447 查看
9.18

写一个程序从输入添加字符串到deque中,并用迭代器写一个循环输出deque中的元素。

解:

int _tmain(int argc, _TCHAR* argv[])
{
deque<string> list1;
string word;
while (cin>>word)
{
list1.push_back(word);
}
auto iter1 = list1.begin();
auto iter2 = list1.end();
for (; iter1 != iter2;++iter1)
{
cout << *iter1 << endl;
}
return 0;
}


9.20

写一个程序从list中考元素至两个deque中。奇偶数存放不同deque。

解:

int _tmain(int argc, _TCHAR* argv[])
{
list<int> list1 = { 1, 2, 3, 4, 5, 6, 7, 8 };
deque <int> list2, list3;
auto iter1 = list1.begin();
auto iter2 = list1.end();
for (; iter1 != iter2;++iter1)
{
if (*iter1 % 2)
{
list2.push_back(*iter1);
}
else
list3.push_back(*iter1);
}
for (auto c : list2)
{
cout << c << endl;
}
for (auto c:list3)
{
cout << c << endl;
}
return 0;
}


9.24

写一个程序来得到vector中的第一个元素,分别用at,序号,front和begin。用空vector测试。

非空数组:

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> list1 = { 1, 2, 3, 4, 5, 6, 7, 8 };
auto val1 = list1.at(0);
auto val2 = list1[0];
auto val3 = list1.front();
auto val4 = *list1.begin();
cout << val1 << endl;
cout << val2 << endl;
cout << val3 << endl;
cout << val4 << endl;
return 0;
}


空数组:
报错。


9.24

如果349页的elem1和elem2相等会怎样?

解:不删除原容器中的元素。

9.25

用一下ia的定义,将ia复制进一个vector和list中。用erase的单个迭代器形式将list中的奇数删除,将vector中的偶数删除。

解:

int _tmain(int argc, _TCHAR* argv[])
{
int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89 };
vector<int> list1;
list<int> list2;
for (int i = 0; i != sizeof(ia)/4;++i)
{
list1.push_back(ia[i]);
list2.push_back(ia[i]);
}
auto iter1 = list1.begin();
while (iter1 != list1.end())
{
if (!(*iter1 % 2))
{
iter1 = list1.erase(iter1);
}
else
++iter1;
}
auto iter2 = list2.begin();
while (iter2 != list2.end())
{
if (*iter2 % 2)
{
iter2 = list2.erase(iter2);
}
else
++iter2;
}
for (auto c:list1)
{
cout << c << endl;
}
cout << endl;
for (auto c:list2)
{
cout << c << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: