小编qua*_*dev的帖子

为什么我可以在调整大小后仍然访问矢量数据?

以下代码不会引发错误:

int main()
{
typedef std::vector<int> intstack;

intstack mystack;

mystack.push_back(7);
mystack.push_back(8);
mystack.push_back(9);

mystack.pop_back();
std::cout << mystack.size(); //prints 2
std::cout << mystack[2]; // prints 9
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我原以为该行std::cout << mystack[2]会引发错误,因为该pop_back操作已调整了向量.为什么数据仍可访问?是因为底层数组中的数据仍然存在而且向量pop_back操作只修改了迭代器吗?

c++ vector stdvector

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

使用二进制计数对数组的所有子集进行计数

所以如果给我一个数组如

a = {1, 2, 3} 
Run Code Online (Sandbox Code Playgroud)

我们知道给定的子数组(不连续)是(这表示幂集)

{1} {2} {3} {1,2,3} {1,2} {1,3} {2,3}
Run Code Online (Sandbox Code Playgroud)

我也知道这些子集可以通过从

000 -> 111 (0 to 7), where each 1 bit means we 'use' this value from the array
e.g. 001 corresponds to the subset {3}
Run Code Online (Sandbox Code Playgroud)

我知道可以用某种方法生成所有子集,但是我不确定如何在c ++中实现

因此,基本上,我要问的是如何(如果可以的话)使用二进制计数来生成功率集?

任何其他用于生成功率集的方法也将不胜感激!

c++ binary counting powerset

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

从ifstream文件读取错误的大小

我有一个包含6291456个数字的.txt文件,没有别的.在读完所有内容并push_back进入向量后,该vector.size()函数返回6291457.这个附加元素来自何处?

    int disparity;
    ifstream disparity_txt;
    disparity_txt.open(path);
    while(!disparity_txt.eof())
    {
        disparity_txt >> disparity;
        vec_disparities.push_back(disparity);
    }
    cout << vec_disparities.size() << endl;
    disparity_txt.close();
Run Code Online (Sandbox Code Playgroud)

c++ stl vector ifstream

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

范围解析运算符之前/之后的空格

C++语言中的哪些规则允许在范围解析运算符之后出现空格::

即以下编译没有警告:

#include <string>
#include <iostream>

int main ()
{
    std::    string s = "Hello";
    std::    cout << s << std     ::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer

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

C ++ find_if()无法将“ this”指针从“ const Client”转换为“ Client&”

以下给我一个错误。它在返回m-> GetAddress()中突出显示“ m”并给出错误:

错误1错误C2662:'RakNet :: SystemAddress Client :: GetAddress(void)':无法将'this'指针从'const Client'转换为'Client&'

我并没有真正理解为什么我会收到此错误。

list<Client*> battleQueue;

if (find_if(battleQueue.begin(), battleQueue.end(), [packet](const Client* m) -> bool { return m->GetAddress() == packet.systemAddress; }) == battleQueue.end())
{
}
Run Code Online (Sandbox Code Playgroud)

c++

-2
推荐指数
1
解决办法
329
查看次数

标签 统计

c++ ×5

vector ×2

binary ×1

counting ×1

ifstream ×1

language-lawyer ×1

powerset ×1

stdvector ×1

stl ×1