小编Sky*_*per的帖子

c ++ vector insert意外的行为

请解释为什么以下代码按预期工作(元素添加到第二个位置):

std::vector<int> v(5);

for(int i = 0; i < 5; i++)
    v[i] = i;

std::vector<int>::iterator it = v.begin()+1;
it = v.insert(it, 33);

cout << v[0] << " " << v[1] << " " << v[2] << " " << v[3] << " " << v[4] << endl;
//outs: 0 33 1 2 3
Run Code Online (Sandbox Code Playgroud)

并且以下不会(元素在第一个位置添加):

std::vector<int> v;
v.reserve(5);

for(int i = 0; i < 5; i++)
    v[i] = i;

std::vector<int>::iterator it = v.begin()+1;
it = v.insert(it, 33);

cout << v[0] << …
Run Code Online (Sandbox Code Playgroud)

c++ insert vector

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

C++分配内存缺点?

如果我使用以下方式分配了大量(GB)的内存:

int N = ...;
int * array_ = new int[N];
Run Code Online (Sandbox Code Playgroud)

并使用数组的一小部分,这种方法有什么样的缺点,除了显而易见的事实,我在浪费内存?它会影响CPU性能还是使程序不稳定?

这背后的原因是避免使用矢量类,因为在激烈的应用程序中性能受到很大影响.

c++ ram

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

字符串到字符转换错误?

尝试大约1小时后,我的代码因为以下原因而无效:

void s_s(string const& s, char data[10])
{
    for (int i = 0; i < 10; i++)
        data[i] = s[i];
}

int main()
{
    string ss = "1234567890";
    char data[10];
    s_s("1234567890", data);

    cout << data << endl;//why junk
}
Run Code Online (Sandbox Code Playgroud)

我根本不明白为什么cout在char数组后显示垃圾.有人可以解释为什么以及如何解决它?

c++

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

标签 统计

c++ ×3

insert ×1

ram ×1

vector ×1