请解释为什么以下代码按预期工作(元素添加到第二个位置):
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) 如果我使用以下方式分配了大量(GB)的内存:
int N = ...;
int * array_ = new int[N];
Run Code Online (Sandbox Code Playgroud)
并使用数组的一小部分,这种方法有什么样的缺点,除了显而易见的事实,我在浪费内存?它会影响CPU性能还是使程序不稳定?
这背后的原因是避免使用矢量类,因为在激烈的应用程序中性能受到很大影响.
尝试大约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数组后显示垃圾.有人可以解释为什么以及如何解决它?