string和vector

string和vector这两个容器很像

初始化

#include <iostream>
#include <string>

using namespace std;

unordered_map<int,string> pos;

int main()
{
    
    
    string ans=string(5,'a');
    cout<<ans;
    return 0;
}
//运行结果
aaaaa

注意ans在定义是赋了初值,即“aaaaa”。
而vecotr也可以如此赋值

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    
    
    vector<int> v(5,0);
    for(int i=0;i<v.size();i++)
        printf("%d ",v[i]);
    return 0;
}
//运行结果
0 0 0 0 0

也可以使用其余的vector在定义vector时赋初值
例如

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    
    
    vector<int> v(5,0);
    vector<int> v1(v);
    for(int i=0;i<v1.size();i++)
        printf("%d ",v1[i]);
    return 0;
}
//运行结果
0 0 0 0 0

先定义了一个vector向量v,并且初始化为有5个0的向量。
又定义了一个vector向量v1,并用v进行了初始化。
v1和v中的内容一样。
注意一个细节

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    
    
    vector<int> v(5);
    for(int i=0;i<v.size();i++)
        printf("%d ",v[i]);
    return 0;
}
//运行结果
0 0 0 0 0

这里定义了一个vector向量v,与上面不同的是,初始化时,只规定了有5个元素,并未说是多少。但是,默认为5个0,这是个比较隐蔽的问题,小心。

使用数组初始化

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    
    
    int a[]={
    
    1,2,3,4,5,6,7,8};
    vector<int> v(a,a+4);
    for(int i=0;i<v.size();i++)
        printf("%d ",v[i]);
    return 0;
}
//运行结果
1 2 3 4

定义了一个数组a,在定义vector向量v时使用了数组中的元素进行了初始化。只用其中的4个元素。
当然了也可以使用vector向量来如此初始化

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    
    
    vector<int> temp;
    for(int i=0;i<10;i++)
        temp.push_back(i);
    vector<int> v(temp.begin(),temp.begin()+4);
    for(int i=0;i<v.size();i++)
        printf("%d ",v[i]);
    return 0;
}
//运行结果
0 1 2 3

上面代码,先定义了一个vector向量temp,并依次向里面插入0-9,之后,用它的前四个元素在定义v时初始化。
下面的赋值也是可以的。

#include <iostream>
#include <vector>

using namespace std;

void show(vector<int> &ans){
    
    
    for(int i=0;i<ans.size();i++)
        printf("%d ",ans[i]);
}

int main()
{
    
    
    vector<int> temp={
    
    1,2,3,4,5,6,7,8,9,10};
    vector<int> ans(temp);
    vector<int> t=vector<int>(ans.begin()+3,ans.end());//多了vector<int> 
    show(t);

    return 0;
}

与vector向量的一部分相比,临时vector

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    
    
    vector<int> temp={
    
    1,2,3,4,5,6,7,8,9,10};
    vector<int> ans(temp);
    vector<int> t=vector<int>(ans.begin()+3,ans.end());
    if(t == vector<int>(ans.begin()+3,ans.end()))//注意这种临时比较两个vector的写法
        printf("yes");
    return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44321570/article/details/112910332