美文网首页
(二)C++篇-vector与迭代器的使用

(二)C++篇-vector与迭代器的使用

作者: GoodTekken | 来源:发表于2022-06-09 09:20 被阅读0次
(1)数据接收

输入:while(cin>>word)
保存:text.push_back(word);

通过控制台不断的输入字符串,使用push_back将其保存在vecotr类型的word中,直到输入的字符串是123,退出当前while循环。

(2)数据处理

for (vector<string>::iterator iter = text.begin();iter != text.end(); ++iter)

相较于传统的for循环,使用text.begin()text.end()可以容易地在vector实时增加新元素而不容易报错。
例如增加了新元素的话,使用传统方式的for测试,用保存的 size 值作为循环的结束条件就会有问题,因为没有将新加入的元素计算在内。

(3)字节长度

cout<<sizeof(vector<int>::size_type)<<endl;

(4)迭代器的使用

for (vector<string>::iterator iter = text.begin();iter != text.end(); ++iter)

可以使用迭代器 *iter获取和设置vector数据,也可以使用下标text[i]来获取和设置vector数据。

(5)bitset的使用

bitset<32> bitvec2(0xffff); // bits 0 ... 15 are set to 1; 16 ...31 are 0

bitset一般使用在位运算的逻辑运算中,可作简单了解。
b.any(): b中是否存在置为 1 的二进制位?
b.none(): b 中不存在置为 1 的二进制位?
b.count() : b 中置为 1 的二进制位的个数
b.size(): b 中二进制位的个数
b[pos]: 访问 b 中在 pos 处二进制位
b.test(pos): b 中在 pos 处的二进制位置为 1 ?
b.set(): 把 b 中所有二进制位都置为 1
b.set(pos): 把 b 中在 pos 处的二进制位置为 1147
b.any(): b 中是否存在置为 1 的二进制位?
b.reset(): 把 b 中所有二进制位都置为 0
b.reset(pos): 把 b 中在 pos 处的二进制位置为 0
b.flip(): 把 b 中所有二进制位逐位取反
b.flip(pos): 把 b 中在 pos 处的二进制位取反
b.to_ulong(): 用 b 中同样的二进制位返回一个 unsigned long 值
os << b: 把 b 中的位集输出到 os 流

测试代码如下:

#include <iostream>
#include <vector>
#include <bitset>

using namespace std;

int main()
{
    string word;
    vector<string>  text;
    //(1)数据接收
    while(cin>>word)
    {
        text.push_back(word);
        if(word=="123")
        {
            break;
        }
    }
 //(2)数据处理
//    传统方式:先获取数据长度,然后使用for循环
//    vector<int>::size_type length = text.size();
//    for(vector<int>::size_type i =0;i<length;i++)
    for(vector<int>::size_type i =0;i != text.size();i++)
    {
            cout<<text[i]<<endl;
    }
//(3)字节长度
    cout<<sizeof(vector<int>::size_type)<<endl;

//(4)迭代器的使用
    //更典型的做法是用迭代器来编写循环:
    // equivalent loop using iterators to reset all the elements in ivec to 0
    cout<<"Clean the vecore use iterator"<<endl;
   for (vector<string>::iterator iter = text.begin();iter != text.end(); ++iter)
   {
       *iter = ""; // set element to which iter refers to 0
   }

       for(vector<int>::size_type i =0;i != text.size();i++)
    {
            cout<<text[i]<<endl;
    }
    cout<<sizeof(vector<int>::size_type)<<endl;


    bitset<32> bitvec2(0xffff); // bits 0 ... 15 are set to 1; 16 ...31 are 0
    cout << "bitvec2: " << bitvec2 << endl;
    return 0;
}

相关文章

  • (二)C++篇-vector与迭代器的使用

    (1)数据接收 输入:while(cin>>word)保存:text.push_back(word); 通过控制台...

  • C++ STL 之 vectot(二)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 迭代器使用 与 array 类似,v...

  • C++boolan part3_week4

    1. 迭代器 1.1 迭代器的种类 使用随机访问迭代器的容器:array, vector,deque使用双向迭代器...

  • C++ 常用代码

    vector 迭代器遍历 C++ 函数模板 冒泡排序 快速排序

  • 迭代器实战——数组分块工具

    迭代器简介 c++中经常会用到这样的写法: 上面代码中,it即是迭代器,通过迭代器自增可以遍历vector容器,而...

  • 16-迭代器与ConcurrentModificationExc

    迭代器与ConcurrentModificationException Vector、ArrayList在迭代的时...

  • 迭代器

    c++迭代器的使用与简介 - 枯龙吟的日志 - 网易博客

  • 13.C++ vector 操作

    vector初始化 vector大小 数组方式操作vector 迭代器方式操作vector 反向迭代器操作vect...

  • vector使用

    初始化 添加元素 vector的其他操作 vector ::size_type 遍历 迭代器 迭代器运算

  • 16/4 标准模板库

    c++库中90%是stl,stl的绝大多数是模板 迭代器 1为普通指针调用,2为迭代器遍历数组vector内容 s...

网友评论

      本文标题:(二)C++篇-vector与迭代器的使用

      本文链接:https://www.haomeiwen.com/subject/oxapmrtx.html