这个问题在这里已有答案:
我想管理三个std :: vectors并考虑这样的解决方案:
#include <stdlib.h>
#include <vector>
int main() {
std::vector<int> nums[3];
nums[0].push_back(1);
nums[0].push_back(3);
nums[0].push_back(5);
nums[1].push_back(10);
nums[1].push_back(20);
nums[1].push_back(30);
nums[2].push_back(100);
nums[2].push_back(300);
nums[2].push_back(500);
nums[2].push_back(700);
int i;
for (i = 0; i < nums[0].size(); i++) {
printf("%d\n", nums[0].at(i));
}
for (i = 0; i < nums[1].size(); i++) {
printf("%d\n", nums[2].at(i));
}
for (i = 0; i < nums[2].size(); i++) {
printf("%d\n", nums[2].at(i));
}
}
为什么这不起作用?我不懂编译器输出 . 知道如何解决这个问题吗?
gcc:
体系结构x86_64的未定义符号:“std :: __ 1 :: __ vector_base_common :: __ throw_length_error()const”,引自:void std :: __ 1 :: vector> :: __ push_back_slow_path(int const&)in code-4a0a01.o“std :: __ 1 :: __ vector_base_common :: __ throw_out_of_range()const“,在代码-4a0a01.o”std :: terminate()“中引用自:std :: __ 1 :: vector> :: at(unsigned long),引自: ___clang_call_terminate in code-4a0a01.o“operator delete(void *)”,引自:std :: __ 1 :: __ vector_base> :: ~__vector_base(),代码为-4a0a01.o std :: __ 1 :: __ split_buffer&> ::〜代码-4a0a01.o中的__split_buffer()“operator new(unsigned long)”,引用自:std :: __ 1 :: __ split_buffer&> :: __ split_buffer(unsigned long,unsigned long,std :: __ 1 :: allocator&)代码 - 4a0a01.o“___cxa_begin_catch”,引用自:___clang_call_terminate in code-4a0a01.o“___gxx_personality_v0”,引用自:代码-a0的中的_main-4a0a01.o void std :: __ 1 :: vector> :: __ push_back_slow_path(int const&)in code- 4a0a01.o矮人异常展开信息(__eh_fr代码-4a0a01.o ld:找不到架构x86_64 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
1 回答
您正在使用
gcc
这是C编译器 . C编程语言不支持STL(标准模板库) . 使用g++
,这是C编译器 .