c++ stl 声明对象的同时如何初始化?
来源:百度知道 编辑:UC知道 时间:2024/05/17 04:16:42
哇,很感谢大家,有这么多的高手,受益匪浅啊!
其实不一定要在声明的同时初始化,声明过后初始化也行。
感谢大家的答案,都不知道哪个好了,采纳一个答案后,很想给每个给我意见的人分,不知道百度有没有这个功能。
只要在声明对象的时候,增加初始化列表,使对象创建时调用对应的构造函数,即可完成同时初始化的操作。
具体调用方式,依赖于对象类型,及支持的构造函数。
以stl中的string类为例,如定义
string a;
即无参构造,将a初始化为空字符串。
如
string a("for test");
就是把string类型的对象a初始化为"for test"值。
具体对象支持的构造函数列表,可以查询STL的使用手册获取,根据程序需要灵活选择构造的参数个数和值。
如果是声明的时候就初始化,好像只有使用每个容器的带参数构造函数来初始化
除此之外,就是声明以后的初始化,
对于list, deque,vector, 使用 assign
对于下面的,
set, multiset, map, multimap 使用 insert
stack, queue, priority_queue 使用 push
不过对于这些实际上已经不算是是真正的初始化了。
list:
// list::assign
#include <iostream>
#include <list>
using namespace std;
int main ()
{
list<int> first;
list<int> second;
first.assign (7,100); // 7 ints with value 100
second.assign (first.begin(),first.end()); // a copy of first
int myints[]={1776,7,4};
first.assign (myints,myints+3);