C++中的数据结构
程序员文章站
2024-03-06 22:22:44
...
一直以来虽然写的都是C++的代码但是基本上用的都是C的数据结构。这次实现一个相对大型的C++项目,发现了很多很有用的数据结构,通过使用这些数据结构,可以极大程度的提高开发效率。所以计划逐渐整理下C++的数据结构,以及他们的用法,以供自己以及小白参考。暂时不涉及时间性能。
std::string
std::vector
std::vector<int> vec;
std::vector<int> vec(3); // 深度为3的整形数据
std::vector<int> vec(3, 1); // 深度为3的整形数据,初始化为1
vec.size() // 获得vec中元素的个数,也就是size(尺寸)
vec.push_back(2); // push 2到vec末尾中,深度增加1
vec.resize(5) // 重新设置vec的size,我一般是增加size,此时原有数据是不改变的,相比push_back()一个个的增加数据,这样做的效率会高一些。
vec.data() // 返回一个指向vec的pointer
vec.clear() //清空vec
// 而且std::vector非常灵活,可以和各种数据结构搭配使用:
std::vector<std::array<int, 5>> //二位数据如果列数固定,可以在里面使用array, 如果长度可调,可继续使用vector。个人意见是可以用array则用。
std::vector<std::pair<int, std::string>> vec_pair; // 定义了一个int+string的键值对数组
vec_pair.push_back(std::pair<int, std::string>(1, "abc"));
std::cout << "vec_pair[0] = "( << vec_pair[0].first << ", " << vec_pair[0].second << ")\n";
std::array
std::pair
std::map
std::set
set也是一个特别有用的数据结构,利用它的唯一性,可以实现对整型数据去重和排序:
std::array<int, 10> arr{1, 3, 7, 3, 2, 6, 4, 4, 1, 5}; // 对arr进行去重并按照从小到大的顺序排序
std::set<int> arr_sort;
for(int i = 0; i < arr.size(); i++)
arr_sort.insert(arr[i]);
// result: arr_sort = {1, 2, 3, 4, 5, 6, 7};
上述这些数据结构,很多都是具有相同的基类,很多function可以直接无脑使用,比如:size(), data()… 当然还有很多很好用的function,这里没有涉及到,可以参见:http://www.cplusplus.com/reference/
后续计划使用到哪补充到哪。
上一篇: 关于有些Asp.net项目发布后出现网址乱码的解决方法
下一篇: Android开发之天气趋势折线图