小编W.J*_*Joe的帖子

压缩bools在C++中的std :: vector功能

C++中的std :: vector是否会压缩?我的意思是我已经读过std :: vector可以将8个布尔值组合成1个字节.但是,当我在visual studio中尝试此代码时,

#include <vector>
#include <iostream>
using namespace std;

int main()
{
    vector<bool> array {true, false, false, true, true,false,false,true};
    cout << sizeof(array) << endl;
    cout << sizeof(array[0]) << endl;

    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它打印:

24
16
Run Code Online (Sandbox Code Playgroud)

而在另一个IDE中,例如代码块,它打印20和8.

我不太清楚这里的布尔值.

c++ boolean vector

5
推荐指数
1
解决办法
589
查看次数

const char*是字符串还是指针

我以为const char*表示一个指向不可变字符串的可变指针.

但是,当我这样做时,

#include <iostream>
using namespace std;

const char *name1 = "Alex";

int main() 
{
   name1 = "John";
   cout << name1 << endl;
}
Run Code Online (Sandbox Code Playgroud)

它只是打印约翰并没有显示任何问题.我想知道为什么程序将name1视为字符串并使其可变?

c++ string pointers

4
推荐指数
1
解决办法
234
查看次数

Iterator在vector :: begin()中返回

我不太了解vector::begin()实际返回的内容.

Cplusplus.com告诉我vector::begin()返回向量的迭代器,这意味着,vector<int> v;它将给出0.

但是,当我在Visual Studio上调试时,监视表显示了第一个元素的值v.此外,"类型"列表示它是a std::_Vector_iterator.

结果,究竟是什么输出vector::begin()

c++ iterator vector

0
推荐指数
1
解决办法
309
查看次数

如何访问子类的新成员函数?

我有2个班:

#include <iostream>
using namespace std;

class A
{
public:
    virtual void print()=0;
};

class B: public A
{
public:
    void print()
    {
        cout<<"B\n";
    }

    void printNew()
    {
        cout<<"Print new";
    }
};

int main()
{
    B b;
    A *a=new B;
    a->printNew();
    delete a;
}
Run Code Online (Sandbox Code Playgroud)

编译器发布错误.如果我想通过A使用printNew,我该怎么办?我认为它必须包含此功能,因为这证明在各种情况下都很有用.

c++

-3
推荐指数
1
解决办法
126
查看次数

标签 统计

c++ ×4

vector ×2

boolean ×1

iterator ×1

pointers ×1

string ×1