C++ 打印Vector、map

#include "stdafx.h"
#include<vector>
#include<map>
int _tmain(int argc, _TCHAR* argv[])
{
    /*string s1("what");
    string s2("dog");
    if (s1 == s2)
    {
        cout << "s1 == s2" << endl;
    }
    else if (s1 < s2)
    {
        cout << "s1 < s2" << endl;
    }
    else
    {
        cout << "s1 > s2" << endl;
    }
    string s1, s2,s3;
    cin >> s1 >> s2;
    s3 = s1 + s2;
    cout << s3 << endl;
    string str, resultStr;
    while (cin >> str)
    {
        resultStr += str + ' ';
        cout << resultStr << endl;
    }
    string str, resultStr;
//    char ch;
    bool hasPunct = false;
    cout << "Enter a string :" << endl;
    //cin >> str;
    getline(cin,str);
    for (string::size_type i = 0; i != str.size();++i)
    if (ispunct(str[i]))
    {
        cout << "Y" << endl;
        system("pause");
        return -1;
    }
    else
    {
        resultStr += str[i];
        cout << resultStr << endl;
    }*/
    //string word;
    //vector<int> text;
    //for (size_t i = 0; i < 10; i++)
    //{
    //    text.push_back(i);

    //}
    //for (vector<int>::iterator it = text.begin(); it != text.end(); it++)
    //{
    //    cout << *it << endl;
    //}
    //for (int i = 0; i < text.size(); i++)
    //{
    //    cout << text[i] << endl;
    //}
    /*map<int, string> myText;
    myText[1] = "Faelan";
    myText.insert(make_pair(2, "Faelan2"));

    for (map<int,string>::iterator it = myText.begin(); it != myText.end(); it++)
    {
    cout << it->first << ":" << it->second << endl;
    }
    cout << myText[2] << endl;
    string szRes = myText.find(2)->second;
    cout << szRes << endl;*/
    struct Faelan
    {
        int a;
        string b;
    };
    map<int, Faelan> myText;

    Faelan value;
    value.a = 1;
    value.b = "ABC";
    myText[1] = value;

    cout << myText[1].a << ":" << myText[1].b;

    for (map<int, Faelan>::iterator i = myText.begin(); i != myText.end(); i++)
    {
        if (i->first==1)
        {

            cout << i->first << "::" << i->second.a << ":" << i->second.b << endl;
        }
    }
    system("pause");
    return 0;
}
### C++ 中 `vector`、`list` 和 `map` 的使用方法与差异 #### Vector 使用方法 `vector` 是一种动态数组,能够自动调整大小。其内部存储方式为连续的内存空间。 创建并初始化一个 `vector<int>` 类型的对象: ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3}; } ``` 访问元素可以通过下标操作符完成,例如获取第一个元素:`vec[0]` 或者利用迭代器遍历整个容器[^1]。 #### List 使用方法 `list` 实现了一个双向链表结构,在任意位置插入或移除节点的时间复杂度都是常数级别 O(1),这使得它非常适合频繁执行此类操作的应用场景。 下面展示如何声明以及填充一个整型列表实例,并通过循环打印所有项: ```cpp #include <iostream> #include <list> int main(){ std::list<char> listTwo {'A', 'B', 'C'}; auto j = listTwo.begin(); while(j != listTwo.end()){ std::cout << *j << " "; ++j; } } ``` 此代码片段展示了从头到尾读取列表内字符的方法[^2]。 #### Map 使用方法 `map` 提供了一种键值对的数据组织形式,允许快速检索特定 key 对应 value 值的操作。默认情况下不允许重复 keys 存在;如果需要支持多条相同 key 记录,则应该选用 multimap 版本。 这里给出简单的例子来说明怎样建立和查询 string 到 int 映射关系的地图对象: ```cpp #include <iostream> #include <map> #include <string> int main(){ std::map<std::string,int> ageMap; ageMap["Tom"] = 28; ageMap["Jerry"] = 27; for(const auto& pair : ageMap){ std::cout<<pair.first<<" is "<<pair.second<<"\n"; } } ``` 这段程序会输出每个人名及其对应的年龄信息[^3]。 #### 容器之间的主要差别 - **性能特点** - `vector`: 支持随机存取,适合于大量追加/覆盖写入而不改变长度的情况。 - `list`: 插入删除效率高,但不便于直接定位某个具体索引处的内容。 - `map`: 查找速度快,适用于按照唯一标识码高效匹配记录的任务。 - **内存布局** - `vector`: 连续分配的一片区域。 - `list`: 非连续分布的节点链接而成。 - `map`: 内部采用红黑树或其他平衡二叉搜索树实现以保持有序性.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值