C++ Vector string for-loop push_back error
C++ Vector string for-loop push_back error
我觉得这是一件很容易的事,但由于某种原因,我不明白发生了什么。
当我运行这部分代码时,这是将URL与数组中的字符串元素相结合,然后将其推入字符串向量,它成功地推第一个URL,但之后有某种内存泄漏?控制台无限循环胡言乱语…
string anonlist[] = {"test1","test2","test3","test4","test5","test6","test7"};
for (int i=0; i<=7; i++)
{
vector<string> nameurl;
nameurl.push_back("http://api.twitter.com/1/users/show.json?screen_name="+anonlist[i]);
cout << nameurl[i] << endl;
}
在索引为0 1 2 3 4 5 6的数组中有7项。你的循环还将包括i = 7超出数组边界的情况。
另一个问题是在循环内部声明vector,这意味着每次循环继续时都会创建一个新的vector。你应该在循环之前声明它。
string anonlist[] = {"test1","test2","test3","test4","test5","test6","test7"};
vector<string> nameurl;
for (int i=0; i < 7; i++)
{
nameurl.push_back("http://api.twitter.com/1/users/show.json?screen_name="+anonlist[i]);
cout << nameurl[i] << endl;
}
每次通过循环创建一个新的vector<string>
,插入一个元素,然后尝试访问索引i
处的元素。当i
为0
时,第一次通过循环时索引i
处只有一个元素。
假设您想将nameurl
的声明移出循环,以便在循环的所有迭代中使用相同的容器
每次通过for循环都创建一个新的vector——这个vector只在for循环中具有块作用域。你应该把vector移出循环。
另一种方法来做Ben的答案:
const string anonlist[] = {"test1", "test2", "test3", "test4", "test5", "test6", "test7"};
vector<string> nameurl(sizeof(anonlist) / sizeof(anonlist[0]), "http://api.twitter.com/1/users/show.json?screen_name=");
for (size_t i = 0; i < nameurl.size(); ++i) {
cout << (nameurl[i] += anonlist[i]) << endl;
}
这样,您就可以编辑anonlist,而不需要修改其余的代码。它构造了一个向量,所有元素都设置为基本URI,这很好。
相关文章:
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 推导 std::vector::back() 的返回类型
- 从不同目录执行时"symbol lookup error:",否则从构建目录执行时按预期工作
- 对象声明中的模板"error: expected expression"
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 为什么我会"error: expected expression"?
- CMake Error at modules/videoio/cmake/detect_ffmpeg.cmake:16