正如(希望)我们都知道的那样,vector<bool>完全被打破,不能被视为交流阵列.获得此功能的最佳方法是什么?到目前为止,我所想到的想法是:
vector<char>替代,或vector<bool_wrapper>你们怎么处理这个问题?我需要c_array()功能.
作为一个附带问题,如果我不需要c_array()方法,如果我需要随机访问,解决此问题的最佳方法是什么?我应该使用双端队列还是别的什么?
编辑:
c_array()是专门的,所以每个bool需要1位.因此,您无法将其转换为C风格的数组.当然,由于可能的对齐问题,我必须读入my_bool :(
struct my_bool
{
bool the_bool;
};
vector<my_bool> haha_i_tricked_you;
Run Code Online (Sandbox Code Playgroud) 所以我,试图解决一项任务.一个已经有代码,但系统输出,"堆栈溢出"我是c +中的新手,我的英语不好所以我很抱歉误解=)
#include <iostream>
using namespace std;
int main (){
int n;
int x;
int k = 0; // ??????? ??? ???????? ???????
int a [200000];
scanf("%d\n",&n);
for (int i = 0; i< n; ++i){
std::cin >> x;
if (x > 0){
k++;
a[k] = x;
}else if(x == 0){
for (int q = 1; q <= k; ++q){ // ???????????
a[k+q] = a[q];
}
k *= 2;
}else{
printf("%d %d\n",a[k],k);
k--;
}
}
system("pause");
}
Run Code Online (Sandbox Code Playgroud)
看起来像算法正常工作,但只有问题是堆栈.非常感谢!