洛阳做网站的公司哪家好,企业营销型网站建设开发,wordpress joomla drupal,怎么打帮人 做网站开发的广告摘要#xff1a; CC STL#xff08;Standard Template Library#xff0c;标准模板库#xff09;在C编程中的重要性不容忽视#xff0c;STL提供了一系列容器、迭代器、算法和函数对象#xff0c;这些组件极大地提高了C程序的开发效率和代码质量。
STL 容器 分为 2 大类 …摘要 CC STLStandard Template Library标准模板库在C编程中的重要性不容忽视STL提供了一系列容器、迭代器、算法和函数对象这些组件极大地提高了C程序的开发效率和代码质量。
STL 容器 分为 2 大类 , 分别是“序列式容器” 和“关联式容器 ”。
序列式容器每个元素都有固定位置取决于插入时机和地点其底层为线性序列的数据结构里面存储的是元素本身。关联式容器元素位置取决于特定的排序准则和插入顺序无关其里面存储的是 key , value 结构的键值对在数据检索时比序列式容器效率更高。 本系列博文将详细介绍CSTL的各种容器的特性优缺点以及其常用算法方法等。本文介绍的是序列式容器-数组stringvectorarraybitset。
开发环境VScodeC17
关键词 CSTL数据存储数据类型数组arraystringvectorbitset 声明本文作者原创转载请附上文章出处与本文链接。 文章目录 摘要正文string常用函数使用例子 array常用函数使用例子 vector常用函数使用例子 bitset常用函数使用例子 推荐阅读 正文
string string类本不是STL的容器但是它与STL容器有着很多相似的操作因此把string放在这里一起进行介绍。C中的string类相当于是字符数组但是其更方便于我们的操作而且不需要在输入之前初始化字符数组的容量节省空间。有需要更深入了解数据结构数组的可看同专栏下数据结构分支 常用函数
front()返回string第一个元素。back()返回string最后一个元素。insert()在指定位置索引插入字符。erase()从指定索引处开始删除字符。replace()从索引处开始替换字符。append()在字符串尾部拼接上字符串。size()返回string包含的元素个数。compare()比较两个字符串如果str小于str2结果为负相等则为0大于则为正 。find()从前往后找对应的字符串若找到返回首字母下标。count()计算字符串中对应字符出现的次数。substr()返回从索引处开始的对应个数元素组成的字符串 。empty()判断字符串是否为空。
使用例子
#include iostream
#include string int main()
{std::string str Hello, World!;// front 和 backstd::cout First character: str.front() std::endl;std::cout Last character: str.back() std::endl;// insertstr.insert(7, Beautiful ); // 在索引7处插入Beautiful std::cout After insert: str std::endl;// erasestr.erase(7, 9); // 从索引7开始删除9个字符这里实际只有8个字符可删除std::cout After erase: str std::endl; // replacestr.replace(7, 5, Great); // 从索引7开始替换5个字符为Greatstd::cout After replace: str std::endl;// appendstr.append( and everyone!);std::cout After append: str std::endl;// sizestd::cout Size of string: str.size() std::endl;// comparestd::string str2 Hello, everyone!;int result str.compare(str2); // 比较两个字符串std::cout Compare result: result std::endl; // findsize_t pos str.find(Great);std::cout Position of Great: pos std::endl;// countsize_t count str.count(o); // 计算字符o出现的次数std::cout Number of os: count std::endl; // substrstd::string sub str.substr(7, 5); // 从索引7开始获取长度为5的子字符串std::cout Substring: sub std::endl;// emptyif (str.empty()) {std::cout String is empty. std::endl;}else {std::cout String is not empty. std::endl;}return 0;
}array C STLStandard Template Library标准模板库中的array是一个固定大小的顺序容器它支持随机访问。与vector不同array的大小在编译时就必须确定且之后不可改变。这意味着array提供了比vector更高的性能因为它不需要在运行时动态分配内存或管理内存大小的变化。然而这也意味着array的灵活性较低不适用于需要动态改变大小的场景。 常用函数
size()返回容器中的元素数量。empty()如果容器为空则返回true。begin(), end()返回指向容器第一个元素和最后一个元素之后位置的迭代器。at(size_t pos)访问指定位置的元素如果位置超出范围则抛出std::out_of_range异常。operator[]可以使用下标操作符[]来访问array中的元素。
使用例子
#include iostream
#include arrayint main()
{ std::arrayint, 5 myArray {1, 2, 3, 4, 5};// 遍历并打印数组for (int i 0; i myArray.size(); i) {std::cout myArray[i] ;}std::cout std::endl;// 使用at访问元素try {std::cout Element at position 3: myArray.at(3) std::endl;}catch (const std::out_of_range e) {std::cout Out of range error: e.what() std::endl;}return 0;
}vector 一句话来说vector 就是能够动态调整大小的 array。和 array 一样vector 使用连续内存空间来保存元素这意味着其元素可以用普通指针的和–操作来访问不同于 array 的是其存储空间可以自动调整。 常用函数
size()返回容器中元素的数量。empty()如果容器为空则返回true。push_back(const T value)在容器的末尾添加一个元素。pop_back()移除容器末尾的元素。begin(), end()返回指向容器第一个元素和最后一个元素之后位置的迭代器。insert(iterator pos, const T value)在指定位置插入一个元素并返回指向新插入元素的迭代器。erase(iterator pos)移除指定位置的元素并返回指向被移除元素之后位置的迭代器。clear()移除容器中的所有元素。
使用例子
#include iostream
#include vectorint main()
{std::vectorint myVector {1, 2, 3, 4, 5};// 在末尾添加元素myVector.push_back(6);// 遍历并打印vectorfor (int i 0; i myVector.size(); i) {std::cout myVector[i] ;}std::cout std::endl;// 在指定位置插入元素myVector.insert(myVector.begin() 2, 99); // 在第三个位置插入99// 再次遍历并打印vectorfor (int num : myVector) { // 使用范围for循环std::cout num ;}std::cout std::endl;return 0;
}bitset C STLStandard Template Library标准模板库中的bitset是一个固定大小的位序列其中每个位可以独立地设置为0或1bitset容器相当于是01数组。bitset是一个模板类通常用于处理位操作如设置、清除、翻转、测试位以及执行位计数和位查找等操作。bitset特别适用于需要精确控制位操作的场景如权限管理、状态标记等。 常用函数
test(size_t pos)测试在位置pos上的位是否为1。set(size_t pos, bool val true)将位置pos上的位设置为val默认为true。reset(size_t pos)将位置pos上的位设置为0。flip(size_t pos)翻转位置pos上的位。to_ulong()和to_ullong()将bitset的内容转换为unsigned long或unsigned long long类型注意这可能会导致数据丢失如果bitset的大小超过了目标类型的位数。size()返回bitset中位的数量。count()返回bitset中设置为1的位的数量。any()如果bitset中至少有一个位被设置为1则返回true。none()如果bitset中没有位被设置为1则返回true。all()如果bitset中的所有位都被设置为1则返回true。
使用例子
#include iostream
#include bitsetint main()
{std::bitset8 myBitset(10101010);// 测试并打印特定位std::cout Bit 3: myBitset.test(3) std::endl; // 输出1因为第3位是1从0开始计数// 翻转特定位myBitset.flip(3);std::cout After flipping bit 3: myBitset std::endl; // 输出01101010// 设置特定位myBitset.set(5);std::cout After setting bit 5: myBitset std::endl; // 输出01101110// 重置特定位myBitset.reset(5);std::cout After resetting bit 5: myBitset std::endl; // 输出01101010// 输出1的个数std::cout Number of 1s: myBitset.count() std::endl; // 输出4return 0;
}推荐阅读
博客主页https://blog.csdn.net/weixin_45068267 客官逛一逛有许多其它有趣的专栏博文
C/C专栏https://blog.csdn.net/weixin_45068267/category_12268204.html 内含其它STL容器使用及对应的数据结构实现