stl

1、问vector<int>dst;
dst.resize(v.size());
dst中有没有对象?
如果只写vector<int>dst,dst中有对象吗?
答、有。没有
2、问vector<int>dst;
dst.reserve(v.size());
问dst中有没有对象?有没有内存????
答、有对象,但是没内存。
3、问for_each(v.begin(),v.end(),myPrint);其中myPrint是一个类,其中有()重载的函数,for_each的返回值是什么?
答、myPrint函数对象会被拷贝一份到for_each中,返回类型就是myPrint的返回类型。但是不是实参myPrint,因为不是引用。
4、问mem_func_ref是什么?mem_fun是什么?
答、成员函数适配器(对象)。成员函数适配器(指针)。
5、问bind2nd或bind1st使用有什么条件?
答、只能对函数对象进行适配。
类person内重载了一个()函数,person();就是函数对象。
6、问绑定适配器的作用?
答、将二元函数对象适配成一元函数对象。
7、问在STL中使用函数对象,要用什么头文件?
答、#include<functional>
8、vs中跳转到指定行快捷键?如何跳转到上一个光标处?
答、ctrl+G。
ctrl+-
9、class person
{
private:
static int count;
}
问有什么问题?
答、必须在class person{}结束处定义count;int person::count=0(变量类型 类作用域 变量值)
10、问在对list容器进行遍历时,用什么方式最好?
答、如果允许,可以通过弹出头元素的方式访问,但是最好是用迭代器进行遍历。
for (int i = 0; i < 10; i++)
{


int Department = rand() % 4 + 1;

EmpMul.insert(pair<int, Employee>(Department, Emp.front()));//向multimap中插入数据(注意map中不允许有重复的键值)
Emp.pop_front();//弹出链表始元素
}
这种方式并不好;可以改为
11、问、
multimap<int, Employee>::iterator *pos = MulEmp.find(i);
什么问题?
答、iterator本来就有指针的含义,再加*,是不合适的。
12、void ShowDepartmentWorkers(multimap<int, Employee> &groups, int depID)
{
auto pos = groups.find(depID);
int cnt = groups.count(depID);
for (int i = 0; i < cnt; ++i)
{
cout << "Name:" << pos->second.mName << " Salary:" << pos->second.mSalary << endl;
++pos;
}
}
问groups.find(depID)的含义是什么?
13、问
class Person
{
friend ostream& operator<<(ostream &os, Person &person)
{
os << "Name:" << person.mName << " Age:" << person.mAge;
return os;
}
public:
Person(string name, int age)
{
mName = name;
mAge = age;
}


bool operator<(const Person &person) const
{
return this->mAge < person.mAge;
}


public:
string mName;
int mAge;
};


//set存储自定义类型
void test04()
{
set<Person> s;
s.insert(Person("aaa", 20));
s.insert(Person("bbb", 70));
s.insert(Person("ccc", 70));
s.insert(Person("ddd", 50));


for (set<Person>::iterator it = s.begin(); it != s.end(); ++it)
{
cout << "Name:" << it->mName << " Age:" << it->mAge << endl;
}
}
问打印结果?为什么?
答、name:aaaAge:20
    name:bbbAge:70
    name:dddAge:50
因为set<Person> s;首先Person是一个类,如果Person中没有重载<或>号,set是不能将Persons排序的,现在Person中重载了按照年龄的方式进行比较大小,
所以年龄自然被选为键值,但是在set中是不允许出现两个相同的键值,但是实值可以,所以Person ccc并没有被插入,被拒绝。
14、问
for (auto &val : s)
{
cout << val << " ";
}
这种形式在哪使用?
答、Linux上-std=c++11;其中c是小写的。
15、
linux上运行报错
error: need ‘typename’ before ‘std::list<T>::iterator’ because ‘std::list<T>’ is a dependent scope
  list<T>::iterator it=mylist.begin();
  ^
  E3.cpp:13:20: error: expected ‘;’ before ‘it’
▽ list<T>::iterator it=mylist.begin();
编译报错位置是list<T>::iterator it=mylist.begin();
问要怎样修改?
答、通过在该句前加typename。
typename list<T>::iterator it=mylist.begin();
16、问怎样在堆上开辟一个stack对象?
答、stack<int>*ss=new stack<int>;
17、问find的返回类型是什么?
答、失败返回map.end();成功返回该元素的迭代器。
18、问Multimap和map有区别吗?
答、唯一区别是multimap的键值可以重复。
19、问在map和list中,对一个元素进行操作或删除,会影响其它迭代器吗?
答、不会。
20、pair第一个元素被称为什么?第二个元素被称为什么?
答、键值、实值。
21、问Map所有的元素类型是什么?
答、pair。
22、给出创建pair对组的三种方法?
答、pair<string,int>pair1(string("name"),20);
pair<string,int>pair2=make_pair("name",30);
pair<string,int>pair3=pair2;
23、问pair是什么?
答、新的类型。将一对值组合成一个值。而且这一对值可以有不同的数据类型,这两个值通过first和second关键字访问。
24、问set容器的第二个模板参数可以设置排序规则吗?默认规则是less<Kty>
答、对。
25、问在set中equal_range(keyElem)的返回值是什么?
答、返回容器中key与keyElem相等的上下限的两个迭代器。
26、二叉搜索树的排序规则是什么?
答、结点的左边结点的值小于结点,但是右结点的值比该结点的值大。
27、迭代器的本质是什么?
答、为对容器中的数据进行算法操作前的工具。例如vector中的迭代器很类似一个指针。
28、问删除和插入操作会不会改变set中其它元素的迭代器?
答、不会。
29、能不能通过set的迭代器改变set元素的值?
答、不能。
30、问在set容器中有键值和实值吗?
答、有,键值就是实值。既然是键值就不允许有相同的元素(键值只能有一个)。
31、问list容器的数据结构是什么?
答、循环的双向链表。
32、问list最重要的性质是什么?
答、插入操作和删除操作都不会造成原有list迭代器失效。在vector中却不具有这样作用,因为vector具有自增长特性。
33、问list容器提供的是什么迭代器?
答、Bidirectional iterators.
34、问哪些容器被使用得最频繁?
答、list和vector。
35、问queue有没有迭代器,元素的进出遵循什么条件?提不提供遍历?
答、没有迭代器,先进先出,不提供。
36、问stack有没有迭代器?有没有遍历?
答、没有迭代器,没有遍历。
37、问对deque排序的效率是怎样的?
答、效率低,所以要尽可能使用vector。
38、vector的迭代器像一个普通的指针,而deque的迭代器并不是?
答、对的。
39、deque的内存增加机制和vector有什么区别?
答、deque的内存是分段的,内存增加也是分段进行添加,不存在预留功能。
40、deque有没有容量的概念?
答、没有。
41、deque和vector的区别?
答、deque是双向开口,而vector是单向开口。deque在开头和结尾插入和删除都很方便,但是vector只在结尾插入和删除方便。
42、归并排序是稳定的算法吗?
答、是的。
43、vector是动态数组吗?
答、是。
44、问迭代器的种类有哪些?
答、输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器
45、问STL的容器中是如何存储数据的,是拷贝还是引用?
答、拷贝,外面存在数据,内部拷贝一个相同的数据。
46、问在map中equal函数的返回类型?
答、iterator对。
47、问lowr_bound和upper_bound的返回类型是什么?它们的取值细则是怎样的?
答、它们的返回类型都是iterator类型,lower_bound(5);表示包括5在内的以5为下界的第一个元素,upper(5)表示5元素的右边界值不包括5,。例如1,2,3,4,5,6,7;lower就是5;upper就是6;例如 1,3,5,2,4;lower还是5;upper就是2.那么1,2,3,6,7呢?
48、问map在进行比较时内部的函数传入的用来比较的数据的类型是?
答、key的类型而不是value的类型。
49、问map的迭代器是随机访问迭代器吗?
答、不是。是双向迭代器。
50、问multi
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值