(3)string不用考虑内存释放和越界问题。string管理char *所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。 string转成char *,实用成员方法c_str()。char *转string,直接将char *传入string的构造方法中即可生成相应的string对象。 下面是string的初始化,赋值和取值操作 /...
vector<char*> ch; vector<string> str; for(int i=0;i<5;i++) { char *c=fun1();//通过这个语句产生不同的字符串c ch.push_back(c); //输出发现,五个都是一样的数值,都是最后一个c的值 str.push_back(c); //正确的存储了 }
string vector: times - 10000 memory - 1752k VM - 828k char* vector: times - 10000 memory - 2340k VM - 1420k 可以看出,使用string以及vector或者静态分配数组,内存消耗是比较少的,多次new小内存导致内存消耗明显增多。
char * 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器 string特点: string 类内部封装了很多成员方法,例如:查找find,拷贝copy,删除delete 替换replace,插入insert string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责 导入:#include<string>// 注意这...
using v_str = vector<string>;//vector支持下标访问,但是list不支持,vector中建议使用.at(num)方式进行下标访问。 using v_const_char = vector<const char *>; using l_str = list<string>; using d_str = deque<string>; using a_int10 = array<int,10>;//array数组必须指定大小。
和 区间,进行初始化。 💬 所以有些场景我们可以这么初始化: string s("hello world"); vector<char> v5(s.begin(), s.end()); 1. 2. 0x02 调试观察 vector 我们打个断点进入调试,打开监视窗口看看。 #include <iostream> #include <vector> ...
string和char指针的基本操作: 代码语言:javascript 代码运行次数:0 复制 Cloud Studio代码运行 #include<string>#include<iostream>using namespace std;voidtest01(){string s1;constchar*str="aaa0";strings2(str);cout<<s1<<endl<<s2;//调用拷贝构造函数strings3(s2);//strings4(10,'a');cout<<s4;}int...
我们这里还是自测试两个比较常用的 int main() { vector<int> v1; vector<char> v2(10,'a'); return 0; } size() && capacity() 这个也是我们经常用到的函数,没有什么可以解释的. int main() { vector<int> v1(20,15); cout << "size: " << v1.size() << endl; ...
vector<char> vec(4,'z');string str(vec.begin(),vec.end());cout<<str<<endl;
回答:可以,通过string的隐式构造函数