欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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/

后续计划使用到哪补充到哪。

相关标签: C++