关于vector和bool数组的问题

maple604 2008-03-19 08:42:35
我想用一个vector装很多个bool数组,比如
typedef vector<bool*> INTVECTOR;
INTVECTOR theVector;

bool b1[3]={1,1,1}
bool b2[4]={0,1,1,0}
然后应该怎么往里放数组啊,用push_back不行啊
大家看看该怎么把数组放入vector啊?
...全文
234 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dubiousway 2008-03-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 maple604 的回复:]
楼上的谢了,我刚开始用vector ,还不知道at 的用法呢
谢了
[/Quote]
看8楼星羽的写法吧,vector 重载了很多常用的运算符,很多时候当普通数组使用就行。
我at函数是随便写的,用起来并不方便
星羽 2008-03-20
  • 打赏
  • 举报
回复


#include "iostream"
#include "vector"
using namespace std;

typedef vector <bool*> INTVECTOR;

int main()
{
INTVECTOR theVector;

bool b1[3] = {true, true ,true};
bool b2[4] = {false, true, true, false};

theVector.push_back(b1);
theVector.push_back(b2);

for (int i = 0; i < 3; ++i)
cout<<theVector[0][i]<<" ";
cout<<endl;

for (int i = 0; i < 4; ++i)
cout<<theVector[1][i]<<" ";
cout<<endl;

return 0;
}

--------

1 1 1
0 1 1 0
请按任意键继续. . .
abupie 2008-03-20
  • 打赏
  • 举报
回复
Vector成员函数
  
  函数
  表述
  c.assign(beg,end)
  c.assign(n,elem)
  将[beg; end)区间中的数据赋值给c。
  将n个elem的拷贝赋值给c。
  c.at(idx)
  传回索引idx所指的数据,如果idx越界,抛出out_of_range。
  c.back()
  传回最后一个数据,不检查这个数据是否存在。
  c.begin()
  传回迭代器重的可一个数据。
  c.capacity()
  返回容器中数据个数。
  c.clear()
  移除容器中所有数据。
  c.empty()
  判断容器是否为空。
  c.end()
  指向迭代器中的最后一个数据地址。
  c.erase(pos)
  c.erase(beg,end)
  删除pos位置的数据,传回下一个数据的位置。
  删除[beg,end)区间的数据,传回下一个数据的位置。
  c.front()
  传回地一个数据。
  get_allocator
  使用构造函数返回一个拷贝。
  c.insert(pos,elem)
  c.insert(pos,n,elem)
  c.insert(pos,beg,end)
  在pos位置插入一个elem拷贝,传回新数据位置。
  在pos位置插入n个elem数据。无返回值。
  在pos位置插入在[beg,end)区间的数据。无返回值。
  c.max_size()
  返回容器中最大数据的数量。
  c.pop_back()
  删除最后一个数据。
  c.push_back(elem)
  在尾部加入一个数据。
  c.rbegin()
  传回一个逆向队列的第一个数据。
  c.rend()
  传回一个逆向队列的最后一个数据的下一个位置。
  c.resize(num)
  重新指定队列的长度。
  c.reserve()
  保留适当的容量。
  c.size()
  返回容器中实际数据的个数。
  c1.swap(c2)
  swap(c1,c2)
  将c1和c2元素互换。
  同上操作。
  vector<Elem> c
  vector <Elem> c1(c2)
  vector <Elem> c(n)
  vector <Elem> c(n, elem)
  vector <Elem> c(beg,end)
  c.~ vector <Elem>()
  创建一个空的vector。
  复制一个vector。
  创建一个vector,含有n个数据,数据均已缺省构造产生。
  创建一个含有n个elem拷贝的vector。
  创建一个以[beg;end)区间的vector。
  销毁所有数据,释放内存。
  
  Vector操作
  
  函数
  描述
  operator[]
  返回容器中指定位置的一个引用。
maple604 2008-03-20
  • 打赏
  • 举报
回复
楼上的谢了,我刚开始用vector ,还不知道at 的用法呢
谢了
dubiousway 2008-03-19
  • 打赏
  • 举报
回复
不可以吗,我试着可以啊:


#include <iostream>
#include <vector>

using namespace std;

typedef vector <bool*> INTVECTOR;

int main(){

INTVECTOR theVector;
bool b1[3]={1,1,1} ;
bool b2[4]={0,1,1,0};
theVector.push_back(b1);
theVector.push_back(b2);

cout <<*theVector.at(0);//第一个数组的[0]元素
cout <<*(theVector.at(1)+1);//第一个数组的[1]元素


return 0;
}
maple604 2008-03-19
  • 打赏
  • 举报
回复
还有我放入vector之后我该如何访问原来数组里的单个bool 值呢
maple604 2008-03-19
  • 打赏
  • 举报
回复
那么请问我如果放如很多不同的bool数组应该怎么办啊
  • 打赏
  • 举报
回复
或者你用typedef定义一个类型:
typedef struct{
bool b[10];
}bl;
bl b;
std::vector<bl> v;
v.push_back(b);
不然:

bool b[10]={0};
std::vector<bool*> v;
v.push_back(b);
  • 打赏
  • 举报
回复
bool数组可以用bitset对象代替

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧