c++ - vector destructor error for matrix multiplication function c++
问题描述
I wanted to define a function for matrix multiplication. The operation is performed and result matrix is built but in the end of main function I have an error in stl_vector.h.
first try:
#include <iostream>
#include <vector>
using namespace std;
std::vector<std::vector<int>> matrix_multiplication(std::vector<std::vector<int>> &a, std::vector<std::vector<int>> &b, size_t n){
std::vector<std::vector<int>> res ( n );
for ( size_t i = 0; i < n; i++ ) {
for ( size_t j = 0; j < n; j++ ) {
int sum = 0;
for ( size_t k = 0; k < n; k++ ) {
sum += a[i][k] * b[k][j];
}
res[i].push_back( sum );
}
}
}
int main() {
vector<vector<int>> aaa(4);
for (int i = 0; i < aaa.size(); ++i) {
aaa[i].assign ( aaa.size(), 1 );
}
vector<vector<int>> bbb(4);
for (int i = 0; i < bbb.size(); ++i) {
bbb[i].assign ( bbb.size(), 2 );
}
std::cout << bbb.size();
matrix_multiplication(aaa,bbb,aaa.size());
}
second try:
#include <iostream>
#include <vector>
using namespace std;
std::vector<std::vector<int>> matrix_multiplication(std::vector<std::vector<int>> &a, std::vector<std::vector<int>> &b, size_t n){
std::vector<std::vector<int>> res ( n );
for (int i = 0; i < n; ++i) {
res[i].assign ( n, 0 );
}
for ( size_t i = 0; i < n; i++ ) {
for ( size_t j = 0; j < n; j++ ) {
int sum = 0;
for ( size_t k = 0; k < n; k++ ) {
sum += a[i][k] * b[k][j];
}
res[i][j] = sum;
}
}
}
int main() {
vector<vector<int>> aaa(4);
for (int i = 0; i < aaa.size(); ++i) {
aaa[i].assign ( aaa.size(), 1 );
}
vector<vector<int>> bbb(4);
for (int i = 0; i < bbb.size(); ++i) {
bbb[i].assign ( bbb.size(), 2 );
}
std::cout << bbb.size();
matrix_multiplication(aaa,bbb,aaa.size());
}
when I run this code:
Process finished with exit code -1073741819 (0xC0000005)
and when I debug code, it stucks in this line (in stl_vector.h).
~vector() _GLIBCXX_NOEXCEPT
{ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
_M_get_Tp_allocator()); } (this line)
解决方案
推荐阅读
- reactjs - 使特定样式仅适用于表体中的 TableCell
- html - 导航栏中的下拉菜单在区域外打开。如何解决?
- python-3.x - 使用 MsAzure 快速入门示例代码将大型 .wav 文件转换为 .txt 文件 [连续识别]
- excel - 如何应用 InStr 将标题名称与名称数组匹配?
- amazon-dynamodb - DynamoDb 检查给定 SS 中包含的 SS 属性
- python - df.dropna() 不删除带有 na 的行
- r - R data.table 对函数参数执行连接
- javascript - Firebase 使用 javascript 查找具有用户名的用户
- angular - Module Federation - webpack 从 package.json 读取错误的依赖版本
- bash - JVM传递子shell参数